Syntaxfehler nicht gefunden

  • Ich bekomme folgende Fehlermeldung:
    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 ')' at
    line 1


    Ich finde einfach keinen Fehler. Hier mein


    Vielen Dank für Eure Hilfe.

  • Hallo Roland


    Dann kommt:
    SELECT * FROM warenliste WHERE ID IN ( 1049, )
    wenn ich noch einen Artikel in den Warenkorb sende, heisst es:


    SELECT * FROM warenliste WHERE ID IN ( 1049,,1064 )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 '1064 )' at line 1

  • Das habe ich auch gedacht, doch wie bekomme ich die weg? Diese ,, kommen vom Befehl mit implode. Wenn ich sie in der dortigen Klammer entferne, dann bekomme ich:
    SELECT * FROM warenliste WHERE ID IN ( 10491064 ). Das kann ja auch nicht richtig sein. Und nur 1 Komma entfernen ergibt wieder eine Fehlermeldung.

  • implode scheint mir zu funktionieren.
    Aber wahrscheinlich sind leere Einträge in der SESSION.


    Wenn 1049,,1064 rauskommt, dann ging sicherlich

    PHP
    $_SESSION["einkaufswagen"](
        0 => 1049
        1 =>
        2 => 1064
    )


    rein.


    ODER es liegt am Inhalt der session.
    Du filterst nicht was in die SQL query rein geht(!).
    Nutze mal mysql_real_escape_string()


    Oder das:

    PHP
    foreach($_SESSION["einkaufswagen"] as $key => $val){
        if(!empty($val)){
            if(!isset($inhalt)){
                $inhalt = mysql_real_escape_string($val);
            }else{
                $inhalt .= ', '.mysql_real_escape_string($val);
            }
        }
    }
    $abfrage = "SELECT * FROM warenliste WHERE ID IN ( $inhalt )";
  • Du könntest den Array auch vor dem imploden auf leere Elemente prüfen:



    (Code ungetestet, übernehme wie immer keine Garantie :love: )

  • Ich gebe die Artikel folgendermassen in den Warenkorb:


    ohne implode kriege ich keine Fehlermeldung, mit implode:
    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 '1049,
    1049 )' at line 1
    Doch der 2. Artikel wird nicht in die Tabelle geschrieben. Was läuft da falsch?

  • Den Fehler mit der Syntax habe ich gefunden. Das Feld war in der Datenbankstruktur zu klein angegeben.
    Nun habe ich aber immer noch das Problem, dass wenn ich einen weiteren Artikel in den Warenkorb sende, dieser den 1. Datensatz aus der Tabelle schmeisst, so dass er unterhalb der Tabelle unformatiert erscheint.
    Die Abfrage sieht so aus:
    SELECT * FROM warenliste WHERE ID IN ( 1078,1077, 1078, 1077 )Array
    (
    [0] => 1078
    [1] => 1077
    )


    Ist das normal, dass die Einträge doppelt vorhanden sind? Ich habe zuvor die Datensätze auch mal im Warenkorb gelöscht und sie neu hineingegeben.
    Kann mir jemand weiterhelfen?


    Habe den Fehler nun gefunden. Die Klammer war am falschen Ort.

    Einmal editiert, zuletzt von jola58 () aus folgendem Grund: Fehler gefunden

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!