PHP SQL script Tabellen spalten einzeln durchsuchen

  • Wollen wir mal hoffen das der TE nicht so blöd ist wie ich. Ich kriege es mit dein Code nicht zum laufen.


    Aber mal was anderes. Wie soll man diesen Fehler verstehen

    Code
    1. Notice: Trying to get property of non-object in /link/dbsuche2.php on line 36

    Das wäre das

    Code
    1. while ( $row = $oStmnt->fetch() )
    2. $aTableRows[] = '<tr><td>' . $row->normalized_word2 . '</td>
    3. <td>' . $row->normalized_word . '</td>
    4. <td>' . $row->word . '</td></tr>';

    Warum das bei mir nicht läuft weiß ich nicht ,keine Fehler kein nix.Nur ein leeres Ergebniss

  • Keine Ahnung was da los ist. Var dump sagt mir zumindest das bis zu der sql Abfrage alles in Ordnung ist.Bei der ausgabe der while Schleife sagt mir var dump dann das nix gefunden wurde.Ich habe kein Plan wie ich da den Fehler eingrenzen kann. Die Daten der DB passen ,also name und passwort ,auch die DB Name und Spaltename passt auch alles. Sobald ich da extra ein Fehler reinhaue zeigt er mir auch an das da was Falsch ist.


    Der Fehler aus post#21 kommt auch nur unregelmäßig. Wieso habe ich immer wieder mit den zeug probleme? Nie funktioniert was auf der einfacheren Art. Schreibe ich unnötige viele Zeilen dazu geht es ja .Sieht man ja oben das es kompliziert geht. So ein Mist

  • KP was ich da falsch mache

    Der Fehleraus post21 ist nur im ersten Suchfeld. Hatte erst versucht deas mit 4 Suchefledern zu machen da wahren auch nur 2 Felder bei den der Fehler kam.

    Habe jetzt nochmal von vorne angefangen und so wennig wie möglich geändert an dein Script aber irgendwas mache ich noch Falsch.

    Wie gesagt sobald im ersten Feld was ( Alleine ) steht kommt der Fehler. Andere Fehler kommen nicht aber es kommt kein Ergebniss.



    DAS IST KEINE FERTIGE LÖSUNG


    Nee frage dazu .In Zeile 6 habe ich am Ende ein " ; " hinzugefügt weil sonst Zeile 7 Ein Fehler geworfen hat .Wahr das richtig ? Oder kommt der ganze Fehler da weg ?


    EDIT * Link entfernt , weil existiert nicht mehr *

    Der Fehler kommt nur bei bestimmten sachen . Schreib mal ein "a" ins erste Feld dann kommt er zumindest immer

  • Wenn line 38 im Original Script dbsuche2.php $aTableRows[] = '<tr><td>' . $row->word . '</td><td>' . $row->normalized_word . '</td><td>' . $row->normalized_word2 . '</td></tr>';

    ist, hat Stef recht, was aber in meinem Post auch deutlich zu lesen gewesen wäre:

    Zitat

    // building table rows ( assuming we use PDO::FETCH_OBJ )

    ;)


    Das kann man der Methode fetch() mitgeben oder es direkt beim Instanziieren festlegen.

    Ich mache das i.d.R. beim Instanziieren zusammen mit den aus meiner Sicht wichtigsten anderen beiden Optionen:

    PHP
    1. <?php
    2. $aOptions = [
    3.     PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
    4.     PDO::ATTR_EMULATE_PREPARES => false,
    5.     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    6. ];
    7. $oPDO = new PDO( 'mysql:host=localhost;dbname=foobar;charset=utf8', $sDBUser, $sDBPassword, $aOptions );
  • Tippe ich jetzt in der suche ein "a" ein findet er 3x ein "a" . Tippe ich "www" findet er einmal ein "www" . Ich sag doch ich komme mit pdo nicht klar . mysql kriege ich immer zum laufen aber das hier klappt nie. Das will einfach nicht in der Birne

  • Wieso ganze Code ? Ders teht da doch schon in post 26 .Fehlt da noch was ?


    Danach habe ich wie Stef sagte diese Zeile

    Code
    1. while ( $row = $oStmnt->fetch() )

    mit der ausgetauscht

    Code
    1. while ( $row = $oStmnt->fetch(PDO::FETCH_OBJ))

    Das ergab keine änderung.


    Danach habe ich wie du geschrieben hast diese zeile

    Code
    1. $oPDO = new PDO("mysql:host=localhost;dbname=sebastian1012;charset=utf8", "sebastian1012", "****" );

    in der getauscht

    Code
    1. $aOptions = [
    2. PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
    3. PDO::ATTR_EMULATE_PREPARES => false,
    4. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    5. ];
    6. $oPDO = new PDO( 'mysql:host=localhost;dbname=sebastian1012;charset=utf8', 'sebastian1012', '****', $aOptions );

    Das wahrs .vardump bleibt leer egal wo und was ich frage und Fehler kommen auch keine.

    Wie gesagt ich komme mit pdo nicht klar.Ich weiß auch nicht warum.mysql kriege ichja schon immer irgendwie hin aber mit den kram stimmt irgendwas in mein Hirn nicht.

    Eigentlich wollte ich auch nur den TE helfen und dein Code mit mein verbinden.Aber da ich es nicht hinbekomme muß er kucken ob er es hinbekommt. Selbst wenn ich es hinbekomme ,ich darf die fertige Lösung ja sowieso nicht posten

  • Hey,

    PDO ist im Prinzip doch leichter als mysqli und besser finde ich. Da mysqli nur auf Mysql-Datenbanken funktioniert und man mit PDO auch andere Datenbankmanagementsysteme ansprechen kann. Desweiteren hat dies nichts mit PDO geht nicht zu tun. Denn sonst würden auch keine Ergebnisse beim 2 ten Textfeld ausgegeben werden.

    Wieso ganze Code ?

    Zeig uns bitte deinen Code. Es kann sein, dass du da ein Fehler drin hast.


    Führe mal nach dem du das Formular abgesendet hast ein var_dump auf $aClauses aus und Poste uns dann für das 1ste und das 2te Textfeld die Ausgabe.


    Arne Drews : Okay. :thumbup:

  • Ich gebe es auf ,ich bin zu blöd dazu.

    Hier das html

    hier php versuch 1 .

    Die ganzen vardumps habe ich mal drinnen gelassen zum selber testen.

    * Link entfernt , weil existiert nicht mehr *


    die auskommentierten while Schleifen wahren die anderen versuche die Stef gepostet hatte. Nur wahr das Ergebniss das Gleiche.

    Ich habe ehrlich kein Plan was ich falsch mache.Wie man in den vardumps sehen kann läuft da irgendwas gewaltig falsch.


    Gebe ich im ersten Feld nur ein "a" ein ,dauert das etwas bis irgendwas passiert.Was logisch ist weil die Tabelle ja 160.000 Einträge hat .Es kommt mir vor das er da irgendwas macht. Im 2ten Feld ist das nicht so. Suche ich nochmal nach einen "a" Sucht er nicht mehr lange. Und die Fehler kommen auch nur wie sie wollen.

    Ich bin zu Blöd dazu.

    Wir sollten mal den TE fragen ob er es hinbekommen hat und wenn ja ganz schnell das Thema schließen

  • Naja, ich kann bspw. ja nur auf die Brackets der while verzichten, wenn nur die unmittelbar folgende Anweisung ausgeführt werden soll.

    Das ist bei Dir der var_dump(); Das Zusammensetzen der Row passiert demnach in der von Dir gezeigten Code-Version erst nachdem die Iteration beendet ist.


    Ist schon mal das erste, was mir adhoc auffällt.


    EDIT:

    Habe mal eine Test-Datenbank angelegt:


    Vorname Nachname Wohnort
    Hans-Peter Hansen Hansestadt
    Freddy Kaputtlick Bröseldorf
    Hugo Hänger Plattdorf
    Anka Ra Morgenland


    Darauf aufbauend erstelle ich nachher oder morgen mal ein Beispiel, basierend auf meinem Code, um die Funktionalität zu der verdeutlichen.

    Link und Original-Code poste ich dann hier...


    Hier der Link: http://examples.php-rocks.de/frmtest/


    Und hier der relevante, aber wenig überraschende Code: