Hallo
$id = $_GET['id'];
$abfrageergebnis = mysql_query('SELECT titel FROM kalender WHERE ID = $id', $conID );
Ich möchte die $id Variable die mit $_GET['id'] gefüllt wird in der mysql_query verwenden. Aber so funktioniert es nicht. Warum?
Weil Variablen (hier $id) in Strings, die mit "'" (Hochkommata) eingeschlossen werden, nicht interpretiert werden. Dazu im Gegensatz werden Variablen in mit """ (Anführungszeichen) umschlossenen Strings interpretiert.
Der Query sieht schlussendlich also folgendermaßen aus: 'SELECT titel FROM kalender WHERE ID = $id'
. Er sollte aber anstatt $id eine Zahl enthalten, oder?
Entweder du verkettest die Bestandteile des Querystrings richtig, oder du benutzt Anführungszeichen anstatt Hochkommata. Im Übrigen gibt es da noch eine eklatante Sicherheitslücke. Du benutzt den per GET übergebenen Wert ungeprüft und kopierst ihn unnötig um. Im Falle einer übergebenen Integerzahl (Übergabe erfolgt als String) solltest du den Wert mit intval($GET['id'] in einen Integer umwandeln. Wurde etwas anderes als ein Integer (eine Ganzzahl) übergeben, wird der Wert zu 0 umgewandelt, was einfach nur in einem leeren Ergebnis der DB-Abfrage resultiert.
$abfrageergebnis = mysql_query("SELECT titel FROM kalender WHERE ID = ".intval($_GET['id'], $conID );
Im Falle von in Queries zu verwendenden Zeichenketten benutzt man mysql_real_escape_string statt intval.
Beispiel:
$abfrageergebnis = mysql_query("SELECT titel FROM kalender WHERE autor = ".mysql_real_escape_string($_GET['author'], $conID );
PS: Mit einer normalen Ziffer statt $id in der Query funkionierts.
Dann ist ja auch eine Zahl (als String) im Querystring.
Tschö, Auge
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
Veranstaltungsdatenbank Vdb 0.3