php sql problem
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abschnitt
code
fehler
fehlermeldung
hinweis
http
komma
machen
manual
meer
parameter
problem
set
statement
string
syntax
tip
update
url
zeile
-
Hi Leute, ich finde den Fehler in der folgenden query einfach nicht:
$result = mysqli_query($link,"UPDATE blog SET day='".$_POST['day']."' month='".$_POST['month']."' year='".$_POST['year']."' h='".$_POST['h']."' m='".$_POST['m']."' content='".$_POST['content']."' title='".$_POST['title']."' comment='".$_POST['comment']."' WHERE id='".$id."'");
Fehler:
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 'month='8' year='2011' h='12' m='26' content='In meinem Blog möchte ich Allerlei' at line 1
Könnte mir jemand auf die Sprünge helfen?
Vielen Dank!
Liebe Grüße,
Stefan -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hey ;)
Kurz um: Dein Problem ist ein SQL Syntaxproblem. Es fehlen die Kommas (,) zwischen den Werten.
Siehe -> http://www.w3schools.com/php/php_mysql_update.asp
UPDATE table_name SET column1=value, column2=value2,... WHERE some_column=some_value
Tipp #1:
Die Fehlermeldung sagt so etwas wie: "Dein Problem beginnt irgendwo bei 'month='8' ..." Das ist ein Hinweis dafür, dass davor alles passt. nach day="" benötigst du also ein Komma.
Tipp #2:
Mach in deine Zeile des SQL-Befehls Zeilenumbrüche. Das macht es nicht nur übersichtlicher für dich beim Programmieren, sondern die Fehlermeldung gibt dir dann auch an, in welcher Zeile der Fehler genau ist. "at line 1" in deinem Fall bringt dir gar nichts. Wenn du dein Statement mit Zeilenumbrüche schön in Abschnitte unterteilst, kann das sehr hilfreich sein.
Tipp #3:
Du arbeitest mit mysqli. Warum verwendest du (aus Sicherheitsgründen) nicht gleich Prepared Statements? Anleitungen wie das geht findest du wie Sand am Meer ;)
In deinem Fall kann man leicht eine SQL Injection einfügen.
Auch auf der PHP.net Seite wird darauf hingewiesen:
http://php.net/manual/en/mysqli.query.php
mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
(...)
Parameter: query
The query string.
Data inside the query should be properly escaped.
Also wenn du keine Prepared Statements verwenden willst, solltest du zumindest die POST-Parameter ordentlich escapen.
lg
Sincer
Beitrag zuletzt geändert: 3.10.2011 18:34:59 von sincer -
Vielen Dank! Da es in diesem Fall nur um ein Admin Tool geht das ich selbst bediene hat die Sicherheit keine Priorität (daher auch so unsauber), aber vielen Dank für den Hinweis!
Vielen Dank für die vielen Tipps!
Liebe Grüße,
Stefan -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage