Frage von MinecrafterPG, 64

Warum funktioniert das folgende PHP Script nicht?

Hi Leute,

ich habe ein PHP Script, das den Inhalt einer Zeile von einer Tabelle aus einer Datenbank ausliest.

    $_sql = "SELECT * FROM IP WHERE id=1 LIMIT 1"; 

Das ist jetzt aber nicht gerade das, was ich wollte, deshalb wollte ich statt id=1 lieber eine Variable verwenden.

$_sql = "SELECT * FROM IP WHERE id=$_GET['id'] LIMIT 1"; 

Das funktioniert aber nicht.

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /read.php on line 27

Habt ihr eine Idee??

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von triopasi, 44

Benutze was in der Art "SELECRT * ... Id='" .mysql_real_escape_string($_GET[...]) . "'";

Am Ende das ist ein " ' ".

Kommentar von MinecrafterPG ,

Danke triopasi, hat funktioniert ^^

Antwort
von derFabi95, 51

Zuerst einmal: füge NIEMALS $_GET direkt in eine SQL-Abfrage. Dazu gibt es die funktion mysql_real_escape_string(). Dadurch kannst du es als Variable ausgeben und dementsprechend einfügen. 

Kommentar von MinecrafterPG ,

Okay, das ich das nicht machen darf, wusste ich nicht. Danke!

Antwort
von maximilianus7, 18

die möglichkeiten für php ausdrücke, die innerhalb " aufzulösen sind, sind etwas willkürlich beschränkt.

eine andere alternative ist durch {...} anzuzeigen, was alles zum aufzulösenden ausdruck gehört:

$_sql = "SELECT * FROM IP WHERE id={$_GET['id']} LIMIT 1";

Antwort
von fluffiknuffi, 19

So würde es gehen - klingt komisch, ist aber so:

$_sql = "SELECT * FROM IP WHERE id=$_GET[id] LIMIT 1";
Aber wie schon gesagt wurde, dann kann jeder dein SQL-Statement manipulieren daher darf man das so nie machen!
Kommentar von MinecrafterPG ,

Ist aber in dem Fall in Ordnung :)

Kommentar von fluffiknuffi ,

Ok :p

Keine passende Antwort gefunden?

Fragen Sie die Community