hallo
ich möchte den wert der spalte Taler aus der tabelle users für einen bestimmten benutzer auslesen. hier ist die datei index.html:
http://doppelsigi.do.funpic.de/mysql.zip
er gibt folgende meldung zurück:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/export/www/vhosts/funnetwork/hosting/doppelsigi/DesertAlive/index.html on line 29
tut mir leid wenn ein paar dumme fehler drin sind aber ich bin anfänger :-((
vielen dank im voraus
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
Zeile 29 sollte so aussehen:
$taleranzeige = "SELECT `Taler` FROM `users` WHERE UserName = '".$_POST['username']."'";
Es ist aber sehr unsicher, POST-Variablen einfach in einen Query einzubauen (SQL Injections)
Besser ists so:
$taleranzeige = "SELECT `Taler` FROM `users` WHERE UserName = '".mysql_real_escape_string($_POST['username'])."'";
Gruß,
WL
Noch besser is so:
$taleranzeige = 'SELECT `Taler` FROM `users` WHERE UserName = "' . mysql_real_escape_string($_POST['username']).'" LIMIT 1';
Erstens muss der Parser den Text in den einfachen Anführungszeichen nicht interpretieren, bei doppelten müsste er das (ist allerdings ein vernachlässigbarer Geschwindigkeitsunterschied), zum anderen bewirkt das "Limit 1", dass die Datenbank bei einem Treffer die Suche abbricht und nicht die ganze Tabelle nach weiteren Übereinstimmungen absucht (das ist unter Umständen ein immenser Geschwindigkeitsunterschied).
Hm. Wenn Username einen UNIQUE Index hat (durchaus nicht ganz unsinnig oder exotisch für diesen Anwendungsfall), würde das dann nicht automatisch nach der ersten Fundstelle gestoppt? Ist schon eine weile her, als ich mich das letzte mal mit dem automatischen internen Optimierer beschäftigt hatte (ein Fulltable-Scan sollte bei vorhandem Index zumindest entfallen) ;-)
Gruß
bor
danke für eure antworten es klappt!