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.

11voto

SuReSh Punkte 1427

Versuchen Sie dies

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

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

4 Stimmen

@panjehra mysql_* ist jetzt deprived und wird aus php 7 entfernt. Verwenden Sie stattdessen mysqli_*

10voto

Dennis Kiptugen Punkte 185
<?php
      $username = $_POST['username'];
       $password = $_POST['password'];

     $result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '".mysql_real_escape_string($username)."'")or die(mysql_error());
while($row=mysql_fetch_array($result))
  {
 echo $row['FirstName'];
 }
 ?>

8voto

Überprüfen Sie zunächst Ihre Verbindung zur Datenbank. Ist sie erfolgreich verbunden oder nicht?

Wenn das erledigt ist, dann habe ich diesen Code geschrieben, und er funktioniert gut:

if (isset($_GET['q1mrks']) && isset($_GET['marks']) && isset($_GET['qt1'])) {
    $Q1mrks = $_GET['q1mrks'];
    $marks = $_GET['marks'];
    $qt1 = $_GET['qt1'];

    $qtype_qry = mysql_query("
        SELECT *
        FROM s_questiontypes
        WHERE quetype_id = '$qt1'
    ");
    $row = mysql_fetch_assoc($qtype_qry);
    $qcode = $row['quetype_code'];

    $sq_qry = "
        SELECT *
        FROM s_question
        WHERE quetype_code = '$qcode'
        ORDER BY RAND() LIMIT $Q1mrks
    ";
    $sq_qry = mysql_query("
        SELECT *
        FROM s_question
        WHERE quetype_code = '$qcode'
        LIMIT $Q1mrks
    ");
    while ($qrow = mysql_fetch_array($sq_qry)) {
        $qm = $qrow['marks'] . "<br />";
        $total += $qm . "<br />";
    }
    echo $total . "/" . $marks;
}

2 Stimmen

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

8voto

A.Aleem11 Punkte 1700

Stellen Sie sicher, dass Sie die Datenbank nicht schließen, indem Sie db_close() vor To Ausführung Ihrer Abfrage:

Wenn Sie mehrere Abfragen in einem Skript verwenden, auch wenn Sie andere Seiten einschließen, die Abfragen oder eine Datenbankverbindung enthalten, dann könnte es möglich sein, dass Sie an irgendeiner Stelle db_close() verwenden, die Ihre Datenbankverbindung schließen würde, also stellen Sie sicher, dass Sie diesen Fehler in Ihren Skripten nicht machen.

7voto

user1012181 Punkte 8240

Wenn bei der Überprüfung kein MySQL-Fehler angezeigt wird, stellen Sie sicher, dass Sie Ihre Datenbanktabelle richtig erstellt haben. Das war bei mir der Fall. Suchen Sie nach unerwünschten Kommas oder Anführungszeichen.

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