1002 Stimmen

mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows usw... erwartet, dass Parameter 1 eine Ressource ist

Ich versuche, Daten aus einer MySQL-Tabelle auszuwählen, aber ich erhalte eine der folgenden Fehlermeldungen:

mysql_fetch_array() erwartet, dass Parameter 1 eine Ressource ist, die boolesch ist

Dies ist mein Code:

$username = $_POST['username'];
$password = $_POST['password'];

$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE $username');

while($row = mysql_fetch_array($result)) {
    echo $row['FirstName'];
}

15 Stimmen

Sie können weitere nützliche eroor msg erhalten, indem Sie:: QUERY oder die(mysql_error());

124 Stimmen

Auch der obligatorische Hinweis: Ihr Code ist anfällig für SQL-Einschleusung . Sie sollten die Benutzereingaben validieren und/oder ausblenden. Werfen Sie einen Blick auf mysql_real_escape_string . Vertrauen Sie niemals auf Benutzerdaten.

7 Stimmen

Eigentlich wird der Code des OPs einen Syntaxfehler auf dem MySQL-Server verursachen, aber zumindest ist er pas anfällig für SQL Injection, da bei einfachen Anführungszeichen keine Variableninterpolation möglich ist.

0voto

Dennis Kiptugen Punkte 185

Da $username eine php-Variable ist, müssen wir sie als String an mysqli übergeben. Da wir in der Abfrage mit einem einfachen Anführungszeichen begonnen haben, verwenden wir das doppelte Anführungszeichen, das einfache Anführungszeichen und einen Punkt für die Verkettung ("'.$username.'"), wenn Sie mit einem doppelten Anführungszeichen begonnen haben, würden Sie die Anführungszeichen umkehren ("".$username.'").

$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query('SELECT * FROM Users WHERE UserName LIKE "'.$username.'"');

while($row = mysql_fetch_array($result))
     {
      echo $row['FirstName'];
     }

$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '".$username."' ");

while($row = mysql_fetch_array($result))
     {
      echo $row['FirstName'];
     }

aber die Verwendung von Mysql hat viel abgeschrieben, verwenden Sie PDO stattdessen. es ist einfach, aber sehr sicher

0 Stimmen

Aber Mysql Verwendung hat veraltet. Sie können PDO stattdessen verwenden. Lassen Sie mich Ihnen ein Beispiel Login geben.

2 Stimmen

Passwörter sollten NIEMALS in reiner Textform gespeichert werden. Nutzen Sie die eingebauten Funktionen von PHP für das Hashing von Passwörtern und die Verifizierung von gehashten Passwörtern!

0 Stimmen

Verwenden Sie diesen Code nicht. Er ist sehr anfällig für SQL-Injection-Angriffe.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X