mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows usw... parameter erwartet 1 Ressource oder Ergebnis

Ich versuche, wählen Sie die Daten aus einer MySQL Tabelle, aber ich erhalte eine der folgenden Fehlermeldungen angezeigt:

mysql_fetch_array() erwartet parameter 1 to be resource, boolean given

oder

mysqli_fetch_array() erwartet parameter 1 to be mysqli_result, boolean given

oder

Rufen Sie an eine member function fetch_array() on boolean /nicht-Objekt -

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'];
}

Das gleiche gilt für code wie

$result = mysqli_query($mysqli, 'SELECT ...');
//mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given
while( $row=mysqli_fetch_array($result) ) {
    ...

und

$result = $mysqli->query($mysqli, 'SELECT ...');
//Call to a member function fetch_assoc() on a non-object
while( $row=$result->fetch_assoc($result) ) {
    ...

und

$result = $pdo->query('SELECT ...', PDO::FETCH_ASSOC);
//Invalid argument supplied for foreach()
foreach( $result as $row ) {
    ...

und

$stmt = $mysqli->prepare('SELECT ...');
//Call to a member function bind_param() on a non-object
$stmt->bind_param(...);

und

$stmt = $pdo->prepare('SELECT ...');
//Call to a member function bindParam() on a non-object
$stmt->bindParam(...);
Sie erhalten weitere nützliche eroor msg mit:: QUERY or die(mysql_error());
Der obligatorische Hinweis: Dein code ist anfällig für SQL-injection. sollten Sie überprüfen, und/oder die Flucht der Benutzereingaben. Haben Sie einen Blick auf mysql_real_escape_string. Never trust user data.
Eigentlich ist der OP-code zu einem Syntaxfehler, die auf dem MySQL-server, aber zumindest ist es nicht anfällig für SQL-Injection, weil die einzelnen Zitate nicht variable interpolation.
Ich weiß, dies ist eine sehr alte, und wahrscheinlich der möglichst genaue Zeitpunkt, aber dein Kommentar ist jetzt gefährlich falsch in einer Art und Weise: mysql_real_escape_string ist nicht sein-alles und Ende-alles von SQL-injection-Schutz, es ist immer noch anfällig für eine Reihe von Angriffen. (Nein, Sie sagte nie, dass es perfekt ist, aber Sie impliziert, es war die einzige Lösung erforderlich) Die beste Lösung ist jetzt, PDO, soweit ich weiß.
Neben den ersten Fehler, was du gepostet hast würde haben geworfen ein weiterer Fehler, diese für LIKE $username da wir mehr als wahrscheinlich Umgang mit einem string und nicht integer. Daher würde es, zitiert zu werden.

InformationsquelleAutor iamjonesy | 2010-06-04

Schreibe einen Kommentar