Dynamische SQL Suche mit Like...

  • Hallo,
    ich will gerne eine Suche für Items machen.
    Man kann nach Itemstatus also verkauft, nichtverkauft oder alle suchen
    und zusätzlich server auswählen oder auch alle. Da für "alle" jeweils kein
    AND ... in der SQL Abfrage gebraucht wird habe ich den Zusatz in einer
    Variable.

    In der echo Ausgabe steht eigentlich alles wie ich es haben möchte.
    Letztendlich wird jedoch trotzdem der Fehler:

    Zitat

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\PenyaShop\Suche.php on line 86


    ausgegeben.

    Hier der komplette Code der Datei (unten ist das mit den Variablen):

  • Wie oft soll ich dir das noch schreiben:

    Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

    Und ein mysql_error hilft in der Regel auch! mysql_real_escape_string fehlt auch! Alles Dinge, die dir schon 'zig mal geschrieben wurden!

  • Lass ihn halt warten bis ihm das erste mal nen '); drop database eingeschleust wird ;)

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Zitat

    Lass ihn halt warten bis ihm das erste mal nen '); drop database eingeschleust wird ;)

    Zitat

    mysql_real_escape_string fehlt auch


    Mir war bewusst, dass dies noch fehlte, es ist momentan nur lokal und
    ich wollte es erst nachher einbaun, da ich nun noch nicht weiß ob dies
    wirklich die endgültigen SQL vars sind.

    Zitat

    Wie oft soll ich dir das noch schreiben:


    Scheint dir ja Spaß zu machen.

    Zitat

    mysql_error hilft in der Regel auch!


    Hilft mir nur auch nicht, da ich nun nur noch sehe:

    Code
    [FONT=Tahoma][COLOR=#4b4b4b]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%hallo% AND Gekauft = '1'' at line 1[/COLOR][/FONT]


    Wenn ich mir den SQL String also Variable $suchdurchfuehrung_1 ausgeben lasse sehe ich folgendes.

    SQL
    SELECT * FROM itemverkauf WHERE Titel LIKE %hallo% AND Gekauft = '1'


    Und das müsste ja so richtig sein.


  • Hilft mir nur auch nicht, da ich nun nur noch sehe:

    Code
    [FONT=Tahoma][COLOR=#4b4b4b]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%hallo% AND Gekauft = '1'' at line 1[/COLOR][/FONT]


    Sag mal... natürlich hilft dir das, wenn du auch mal versuchst die Fehlermeldung zu verstehen statt sie nur hier reinzukopieren.
    Zaunpfahl: Grundkenntnisse Mysql.
    Um Strings gehören Hochkommata:
    LIKE '%hallo%'
    und nicht wie du es hast LIKE %hallo%

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Ups ich hatte eben alles mit einem ' da hatte er jedoch auch gemeckert.

    Zitat

    $suchdurchfuehrung_1 = "SELECT * FROM itemverkauf WHERE Titel LIKE '$suchwort' ".$suchstatus." ".$serverwahl."";


    So geht es.


  • Scheint dir ja Spaß zu machen.


    Ich finde das überhaupt nicht lustig. Ganz im Gegenteil! Es ist langsam albern, dass man dir das immer wieder schreiben muss. Anstatt dir selber mal etwas Mühe zu geben ziehst du es vor, immer wieder die gleichen Probleme zu posten, die man ohne große Anstrengung selber lösen könnte.

  • Ich finde es lustig. :D
    Wie wäre es denn so:

    Zitat von Eine sinnvoller Fragen-Beantworter

    Hallo!
    Du hasst die ' um %hallo% vergessen.
    Das hättest du aber auch selbst mit ein wenig Probieren lösen können. ;)


    Hat auch etwas...