Ankündigung

Einklappen
Keine Ankündigung bisher.

WHERE beg_name='$var' gibt nicht alle Werte aus

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • WHERE beg_name='$var' gibt nicht alle Werte aus

    Hallo zusammen,

    nun bin ich auf eine neues Problem gestoßen.

    In der MariaDB habe ich eine ID als Autoincrement, Spalten für Namen, Vornamen, Identnummer etc. pp.
    Nun habe ich eine Suchabfrage gemacht:

    SELECT * FROM 20_beg WHERE beg_name='$suche' OR beg_vorname='$suche' OR identnummer='$suche' ORDER BY id DESC

    In der Datenbank sind auch Familien, sprich mehrere Ergebnisse zu einem Namen. Nur leider wird immer der aktuelle Wert also z.B. das jüngste Kind nicht mit ausgegeben Suche ich nach dem Vornamen, geht es. Gehe ich in PHPMYADMIN mit der selben Abfrage, geht es! Ich habe es auch mit LIKE und % vor der Variable versucht, genau das selbe fehlende Kind...

    Zudem zeigt mir phpmyadmin an, das der Unique fehlen würde bei dem akteullen Ergebnis. Aber es werden alle 4 Familienmitglieder angezeigt... Ich verstehe die Welt nicht mehr.

  • #2
    Du zählst auf wo es überall geht, aber zeigst nicht, wo es denn nicht geht. Also keine Ahnung was du willst.

    Kommentar


    • #3
      Hier ist mein aktueller Versuch bei Familie "xyz" alle 4 Mitglieder anzeigen zu lassen, leider werden auf der Webseite immer nur 3 angezeigt.
      Wenn ich diesen SELECT in phpmyadmin ausführe, erscheinen alle 4 Mitglieder... Suche ich nach einer eindeutigen Person oder nach dem Fehlenden Kind, wird es angezeigt.

      $suche='Schmidt';

      $statement = $pdo->prepare("SELECT * FROM 20_beg WHERE id LIKE '$suche' OR pers_nr LIKE '$suche' OR ident LIKE '$suche' OR name LIKE '$suche' OR vorname LIKE '$suche' ORDER BY id DESC");
      $statement->execute();
      $gesamt = $statement->rowCount();
      $row = $statement->fetch();
      $id = $row['id'];
      if($gesamt>1){
      Ausgabe Tabelle mit Hilfe einer WHILE
      }

      Kommentar


      • #4
        Zudem bekomme ich folgende Meldung in phpmyadmin...

        Kommentar


        • #5
          Dir ist schon bewusst, dass du durch fetch() den ersten Datensatz überspringst?

          Außerdem behandelst du nicht den Kontextwechsel nach SQL. Werte dürfen nicht direkt in SQL-Code eingefügt werden, sondern müssen entweder maskiert werden, oder du verwendest gleich Prepared Statements.

          Von der Verwendung von SELECT * ist übrigens abzuraten. Im SELECT-Ausdruck sollten immer alle Spalten angeführt werden, die man im Ergebnis erwartet.

          Kommentar


          • #6
            Bitte PHP-Code auch als solchen markieren.

            Zitat von tuxfan81 Beitrag anzeigen
            PHP-Code:
            $row $statement->fetch();
            $id $row['id'];
            if(
            $gesamt>1){
            Ausgabe Tabelle mit Hilfe einer WHILE

            Ich habs mir schon gedacht: dein fetch() ruft schonmal den ersten Datensatz ab, wenn du dann eine Schleife mit while(fetch()) baust, werden nur noch die restlichen Datensätze abgerufen.

            PS: irgendwelche Meldungen immer als Text posten, keine Screenshots!

            Kommentar


            • #7
              Leider habe ich das tatsächlich nicht bedacht. Nun geht natürlich die Abfrage so wie sie soll

              Danke für die Hilfe zur später Stunde!

              Kommentar


              • #8
                Zitat von tuxfan81 Beitrag anzeigen
                Leider habe ich das tatsächlich nicht bedacht. Nun geht natürlich die Abfrage so wie sie soll

                Danke für die Hilfe zur später Stunde!
                Ach so, ja Hellbringer Du hast recht werde das ganze noch maskieren.
                Den SELECT * nehme ich weil ich tatsächliche alle Spalten ausgeben muss.

                Kommentar


                • #9
                  Zitat von tuxfan81 Beitrag anzeigen
                  Den SELECT * nehme ich weil ich tatsächliche alle Spalten ausgeben muss.
                  Auch dann solltest du ins SELECT alle Spalten schreiben statt * zu verwenden.

                  Kommentar


                  • #10
                    Okay, gut. Dann werde ich das auch ändern.
                    Und mich schlau machen wieso das * nicht so gut ist.

                    Danke

                    Kommentar


                    • #11
                      https://php-de.github.io/jumpto/faq/#select-star da steht es zum Beispiel.

                      Kommentar

                      Lädt...
                      X