Richtige Syntax
keine_Ahnung
- datenbank
Hi,
könnte mir jemand schnell sagen wie das richtig gehört???
MySQL-Client-Version: 5.0.24a
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 '' WHERE ID = 1'
"UPDATE *
SET
Spalte1 = $wert1,
Spalte2 = '$text1',
Spalte3 = $wert2,
Spalte4 = $wert3
WHERE ID = 1"
Danke
Hi,
könnte mir jemand schnell sagen wie das richtig gehört???
MySQL-Client-Version: 5.0.24aYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' WHERE ID = 1'
"UPDATE *
SET
Spalte1 = $wert1,
Spalte2 = '$text1',
Spalte3 = $wert2,
Spalte4 = $wert3
WHERE ID = 1"Danke
Ich sehe massenhaft Potenzial für SQL injection, dafür aber keinen Tabellennamen. Stellst Du sowas ins Internet? Dann sorge für ein gutes Backup, Du wirst es brauchen.
Alexander
Hi,
könnte mir jemand schnell sagen wie das richtig gehört???
MySQL-Client-Version: 5.0.24aYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' WHERE ID = 1'
"UPDATE *
SET
Spalte1 = $wert1,
Spalte2 = '$text1',
Spalte3 = $wert2,
Spalte4 = $wert3
WHERE ID = 1"Danke
Ich sehe massenhaft Potenzial für SQL injection, dafür aber keinen Tabellennamen. Stellst Du sowas ins Internet? Dann sorge für ein gutes Backup, Du wirst es brauchen.
Alexander
Statt dem * habe ich natürlich einen Tabellennanmen. Das ist laut Fehlermeldung ja wohl auch nicht das Problem, oder?
Ich speichere damit Werte in eine Datenbank die mein Statistikskript aus einer anderen geholt halt. Das sollte doch kein Problem sein oder? Also sicherheitstechnisch.
Statt dem * habe ich natürlich einen Tabellennanmen. Das ist laut Fehlermeldung ja wohl auch nicht das Problem, oder?
Dann poste bitte den Origialcode, keine sinnentstellte, zensierte Variante desselben.
Ich speichere damit Werte in eine Datenbank die mein Statistikskript aus einer anderen geholt halt. Das sollte doch kein Problem sein oder? Also sicherheitstechnisch.
Wenn Du fragen mußt, ist es ein Sicherheitsproblem. Wenn Du beweisen kannst (im Sinne eines mathematischen Beweises), dass Dein Statement mitsamt seiner Umgebung keine Sicherheitslücke ist, ist es kein Sicherheitsproblem.
Alexander
"UPDATE TBA
SET
Spalte1 = $wert1,
Spalte2 = '$text1',
Spalte3 = $wert2,
Spalte4 = $wert3
WHERE ID = 1"
So mit Tabellenname. Ich hab schon alles Mögliche bei ID versicht die 1 mit Klammern und Anführungszeichen, das ID mit den Strichen aber ich bekomme immer die Fehlermeldung das die Syntax nicht stimmt.
Wenn Du fragen mußt, ist es ein Sicherheitsproblem. Wenn Du beweisen kannst (im Sinne eines mathematischen Beweises), dass Dein Statement mitsamt seiner Umgebung keine Sicherheitslücke ist, ist es kein Sicherheitsproblem.
Das ist mir jetzt nicht 100 pro klar was du meins. Natürlich gibt es irgendwo einen User der eine Eingabe macht. Diese Eingabe wird auch überprüft aber ob ich wirklich alle Möglichkeiten ausgeschlossen habe das da auch Werte eingetragen werden können die so nicht gedacht sind kann gut sein.
Hi,
So mit Tabellenname. Ich hab schon alles Mögliche bei ID versicht die 1 mit Klammern und Anführungszeichen, das ID mit den Strichen aber ich bekomme immer die Fehlermeldung das die Syntax nicht stimmt.
Laut Fehlermeldung liegt der Fehler VOR der WHERE-Klausel. Mach Testausgaben von allen Variablen, die Du da reinfütterst, bzw. lass mal den resultierenden SQL-String ausgeben, da solltest Du dann auf den ersten Blick sehen, was fehlt.
LG
Laut Fehlermeldung liegt der Fehler VOR der WHERE-Klausel. Mach Testausgaben von allen Variablen, die Du da reinfütterst, bzw. lass mal den resultierenden SQL-String ausgeben, da solltest Du dann auf den ersten Blick sehen, was fehlt.
Jup richtig. Eine der Variablen war noch ein Sting und kein int wie die Spalte verlangt.
Danke für die Hilfe!
"UPDATE
TBA
SET
Spalte1 = $wert1,
Spalte2 = '$text1',
Spalte3 = $wert2,
Spalte4 = $wert3
WHERE ID = 1"
Ich würde tippen, dass du die ' vergessen hast, wenn es sich bei den Spalten um String-spalten handelt.
also Spalte1 = '$wert1'
oder Spalte1 = "$wert1"
oder wenns noch Probleme gibt und das ganze in PHP ist auch mal so probieren:
"UPDATE... '".$wert1."' Spalte2 = '".$wert2."'
Gruß!
Moin!
"UPDATE
TBA
SET
Spalte1 = $wert1,
Spalte2 = '$text1',
Spalte3 = $wert2,
Spalte4 = $wert3
WHERE ID = 1"Ich würde tippen, dass du die ' vergessen hast, wenn es sich bei den Spalten um String-spalten handelt.
MySQL unterscheidet nicht zwischen String-Spalten und Nicht-String-Spalten. Alle Datenwerte gehören a) escaped und b) in einfache 'Quotes'.
Davon abweichen darf man nur, wenn, wie erwähnt, beweisbar 100% sicher ist, dass keine Injections von schädlichen Zeichen stattfinden können.
- Sven Rautenberg
"UPDATE
TBA
Sind das im Original backticks (ASCII 96)? Was sollen die rund um den Tabellennamen?
Alexander
In diesem Fall wohl nicht notwendig. Generell verwendet man die, um MySQL zu sagen, dass das ein Tabellenname ist (für den Fall, dass man mal reservierte Wörter als Namen benutzt). Gilt übrigens auch für Spaltennamen.
LG
In diesem Fall wohl nicht notwendig. Generell verwendet man die, um MySQL zu sagen, dass das ein Tabellenname ist (für den Fall, dass man mal reservierte Wörter als Namen benutzt). Gilt übrigens auch für Spaltennamen.
Wieder was gelernt. Alle DBs, die ich kenne, nutzen dafür Double Quotes, und ich denke, dass es auch so im SQL Standard einzementiert ist. MySQL kann zumindest mit etwas Gewalt ("SET sql_mode='ANSI_QUOTES'") dazu gebracht werden, sich wie eine Standard-DB zu verhalten, was das angeht.
Alexander
Hi,
könnte mir jemand schnell sagen wie das richtig gehört???
MySQL-Client-Version: 5.0.24aYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' WHERE ID = 1'
"UPDATE *
SET
Spalte1 = $wert1,
Spalte2 = '$text1',
Spalte3 = $wert2,
Spalte4 = $wert3
WHERE ID = 1"Danke
Du hast keinen Tabellennamen angegeben!?