• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Fehlermeldung: Warum?

Zupi

Mitglied
Hallo.

Habe folgenden Code(Ausschnitt):

PHP:
$abfrage = "SELECT * FROM users WHERE 'username' like $username LIMIT 1";
    $ergebnis = mysql_query($abfrage);
    $row = mysql_fetch_assoc($ergebnis);


Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /mnt/webi/e0/81/53393381/htdocs/profil/login.php on line 13

Das ist ja eine Datenbankabfrage, habe jetzt mal als Benutzernamen / PW "Kind" eingeben. Warum klaptt das nicht? Datensatz ist vorhanden.

Danke
 
Ist die Verbindung zur Datenbank hergestellt? Feld und Tabellennamen gehören in backticks (`) und nicht in singlequotes ('), $username ist ein String, also singlequotes drum rum. Und dann lass Dir mal im Fehlerfall den Fehler ausgeben:
PHP:
  $abfrage = "SELECT * FROM `users` WHERE `username` = '".mysql_real_escape_string($username)."' LIMIT 1";
    $ergebnis = mysql_query($abfrage) or die(mysql_error());
    $row = mysql_fetch_assoc($ergebnis);
Darüber hinaus ist mysql am Aussterben, besser ist mysqli.
 
Mit mysql_fetch_assoc hat es leider nicht geklappt. Habe deinen (@thuemmy) Vorschlag genommen und dafür mysql_fetch_object eingesetzt und siehe da, es klappt. Danke

PHP:
$abfrage = "SELECT * FROM `users` WHERE `username` = '".mysql_real_escape_string($username)."' LIMIT 1";
    $ergebnis = mysql_query($abfrage);
    $row = mysql_fetch_object($ergebnis);
 
Ich werf mal noch mysql_error() als Stichwort ein. Damit kannst Du herausfinden, woran das SQL-Statement scheitert.
 
Klar gibt es da auch noch PDO. Da ich mich aber bisher nur mit mysqli beschäftigt habe und das mehr oder weniger kenne, nenne ich das auch. Gibt es da eigentilch merkliche Unterschiede, zwischen PDO und mysqli?
 
Das war nicht auf dich bezogen ^^
Aber um die Frage zu beantworten: Ja. PDO hat named-Placeholders, kann mit diversen Datenbanksystem umgehen, hat eine klarere API (mysqlis API könnte man nicht nachbauen mit variabler Anzahl an Referenzparametern), Prepared Statements können auf PHPs Seite (und nicht Datenbankseite) vorbereitet werden, was bei einfachen Scripts die Performance von Prepared Statements um 10% steigen lässt. Und ich gehe mal davon aus, dass PDO weniger anfällig für eine Veralterung ist als mysqli.
 
Zurück
Oben