MySQL Query falsch
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
abstract
anfangen
code
date
datum
ersten zeile
fehlermeldung
interpreter
kommentar
machen
parameter
punkt
re
rezept
set
string
text
url
vergessen
-
Hallo !
Ich programmiere gerade ein Kommentarsystem, und benutze folgenden Query zum Speichern der Daten:
$kommentar_query = 'INSERT INTO rezept_kommentare SET autor = ' . htmlentities($autor) . ', kommentar = ' . htmlentities($text) . ', datum = ' . $date . ', rezeptname = ' . $rezept['rezeptname'], kategorie_id = ' . $rezept['kategorie_id'], rezept_id = ' . $rezept['Id']; $res = $abstract->query ( $kommentar_query );
Ich benutze eine Datenbankklasse.
Könnt Ihr mir sagen, was in der ersten Zeile vom Query falsch ist?
Fehlermeldung:
Parse error: syntax error, unexpected ',' in /home/www/web48/html/new/templates/yaml-template/rezept_ansicht.php on line 118
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
$kommentar_query = "INSERT INTO rezept_kommentare SET autor = '" .htmlentities($autor). "', kommentar = '" .htmlentities($text). "', datum = '" .$date. "', rezeptname = '" .$rezept['rezeptname']. "', kategorie_id = '" .$rezept['kategorie_id']. "', rezept_id = '" .$rezept['Id']. "'; $res = $abstract->query ( $kommentar_query );
so müsste es stimmen.
Deine Abfrage funktioniert nicht da du nur ' benutzt. dadurch schließt er den string nach autor = ab, da aber die parameter für autor auch ein ' benötigen solltest du stehts mit den Anführungszeichen " einen String anfangen und beenden. Daher habe ich bei z.B. Autor folgendes geschrieben :
Autor = ' und dann mit " den string erst einmal beendet. Um nun Variablen einzufügen musst du einen Punkt direkt vor und hinter der Variable setzten und danach musst du mit " und dann ' den String wieder anfangen. am Ende des Strings muss selbstverständlich auch Anführungszeichen hin.
Daraus kommt dann z.B. Autor='blabla' (wenn in der Variable die eingefügt werden soll auch blabla steht.
Beitrag zuletzt geändert: 10.1.2012 13:20:39 von excision -
excision schrieb:
$kommentar_query = "INSERT INTO rezept_kommentare SET autor = '" . htmlentities($autor) . "', kommentar = '" . htmlentities($text) . "', datum = '" . $date . "', rezeptname = '" . $rezept['rezeptname']. "', kategorie_id = '" . $rezept['kategorie_id']. "', rezept_id = '" . $rezept['Id']. "'; $res = $abstract->query ( $kommentar_query );
Vielen Dank !
Es funktioniert! -
bitte siehe oben warum ;)
-
Danke für die Erklärung!;)
-
Der Syntaxfehler war folgender:
$kommentar_query = 'INSERT INTO rezept_kommentare SET autor = ' . htmlentities($autor) . ', kommentar = ' . htmlentities($text) . ', datum = ' . $date . ', rezeptname = ' . $rezept['rezeptname'], kategorie_id = ' . $rezept['kategorie_id'], rezept_id = ' . $rezept['Id'];
Da fehlt ein .' deshalb hat sich der PHP-Interpreter aufgeregt.
Du solltest aber diese Variante verwenden:excision schrieb:
$kommentar_query = "INSERT INTO rezept_kommentare SET autor = '" .htmlentities($autor). "', kommentar = '" .htmlentities($text). "', datum = '" .$date. "', rezeptname = '" .$rezept['rezeptname']. "', kategorie_id = '" .$rezept['kategorie_id']. "', rezept_id = '" .$rezept['Id']. "'; $res = $abstract->query ( $kommentar_query );
-
Die Strichpunkte bei PHP sind leicht zu vergessen aber fehlt einer funktioniert das script nichtmehr also bei einer Fehlermeldung immer zuerst nach einem strichpunkt suchen.
-
young-coding schrieb:
Der PHP-Parser hat deutlich gesagt dass ihm ein
Die Strichpunkte bei PHP sind leicht zu vergessen aber fehlt einer funktioniert das script nichtmehr also bei einer Fehlermeldung immer zuerst nach einem strichpunkt suchen.
nicht passt. Da macht ein ; auch keinen Unterschied.,
Der Fehler ist entstanden weil ein ' vergessen worden ist, deshalb ist der Beistrich nicht als String ausgewertet worden und deshalb hat sich der PHP-Parser beschwert. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage