Homepage selbermachen 7.851 Themen, 35.615 Beiträge

mysql datenbank wert auslesen

Sigilein / 4 Antworten / Baumansicht Nickles

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

bei Antwort benachrichtigen
wlaner Sigilein „mysql datenbank wert auslesen“
Optionen

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

bei Antwort benachrichtigen
xafford wlaner „Zeile 29 sollte so aussehen: taleranzeige SELECT Taler FROM users WHERE UserName...“
Optionen

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).

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen
Borlander xafford „Noch besser is so: taleranzeige SELECT Taler FROM users WHERE UserName ....“
Optionen
zum anderen bewirkt das "Limit 1", dass die Datenbank bei einem Treffer die Suche abbricht und nicht die ganze Tabelle nach weiteren Übereinstimmungen absucht
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
bei Antwort benachrichtigen
Sigilein Nachtrag zu: „mysql datenbank wert auslesen“
Optionen

danke für eure antworten es klappt!

bei Antwort benachrichtigen