it-swarm.com.de

mysql_fetch_array () erwartet, dass Parameter 1 ein Ressourcenproblem ist

Mögliches Duplizieren:
"Warnung: mysql_fetch_array () erwartet, dass Parameter 1 eine Ressource ist, die boolesch ist", wenn versucht wird, einen PHP-Einkaufswagen zu erstellen

Ich verstehe es nicht, ich sehe keine Fehler in diesem Code, aber es gibt diesen Fehler, bitte helfen Sie:
mysql_fetch_array () erwartet, dass Parameter 1 ein Ressourcenproblem ist

<?php

      $con = mysql_connect("localhost","root","nitoryolai123$%^");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }

    mysql_select_db("school", $con);
       $result = mysql_query("SELECT * FROM student WHERE IDNO=".$_GET['id']);
    ?>     


                           <?php while ($row = mysql_fetch_array($result)) { ?>             
                                     <table class="a"  border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#D3D3D3">
    <tr>

    <form name="formcheck" method="get" action="updateact.php" onsubmit="return formCheck(this);">
    <td>
    <table  border="0" cellpadding="3" cellspacing="1" bgcolor="">
    <tr>

    <td  colspan="16" height="25"  style="background:#5C915C; color:white; border:white 1px solid; text-align: left"><strong><font size="2">Update Students</td>


    <tr>
    <td width="30" height="35"><font size="2">*I D Number:</td>
    <td width="30"><input  name="idnum" onkeypress="return isNumberKey(event)" type="text" maxlength="5" id='numbers'/ value="<?php echo $_GET['id']; ?>"></td>
    </tr>

    <tr>
    <td width="30" height="35"><font size="2">*Year:</td>
    <td width="30"><input  name="yr" onkeypress="return isNumberKey(event)" type="text" maxlength="5" id='numbers'/ value="<?php echo $row["YEAR"]; ?>"></td>

<?php } ?>

Ich versuche nur, die Daten in die Formulare zu laden, aber ich weiß nicht, warum dieser Fehler auftritt. Was könnte der Fehler hier sein?

9
user225269

Sie führen nach dem Aufruf von mysql_query keine error-Prüfung durch.

$result = mysql_query("SELECT * FROM student WHERE IDNO=".$_GET['id']);
if (!$result) { // add this check.
    die('Invalid query: ' . mysql_error());
}

Falls mysql_query fehlschlägt, wird false, ein boolean-Wert, zurückgegeben. Wenn Sie dies an die mysql_fetch_array-Funktion übergeben (die einen mysql result object erwartet), wird dieser Fehler angezeigt.

23
codaddict
$id = intval($_GET['id']);
$sql = "SELECT * FROM student WHERE IDNO=$id";
$result = mysql_query($sql) or trigger_error(mysql_error().$sql);

tun Sie es immer so und es wird Ihnen sagen, was falsch ist

2

Probieren Sie es aus

$indo=$_GET['id'];
$result = mysql_query("SELECT * FROM student WHERE IDNO='$indo'");

Ich denke das funktioniert ..

2
yapiyapi

Stellen Sie sicher, dass Ihre Abfrage erfolgreich ausgeführt wurde und Sie die Ergebnisse erhalten haben. Sie können dies überprüfen:

$result = mysql_query("SELECT * FROM student WHERE IDNO=".$_GET['id']) or die(mysql_error());


if (is_resource($result))
{
   // your while loop and fetch array function here....
}
0
Sarfraz

Die wahrscheinlichste Ursache ist ein Fehler in mysql_query(). Haben Sie überprüft, ob es funktioniert? Geben Sie den Wert von $result und mysql_error() aus. Möglicherweise haben Sie etwas falsch geschrieben, die falsche Datenbank ausgewählt, ein Problem mit der Berechtigung hat usw.

$id = (int)$_GET['id']; // this also sanitizes it
$sql = "SELECT * FROM student WHERE idno = $id";
$result = mysql_query($sql);
if (!$result) {
  die("Error running $sql: " . mysql_error());
}

Das Bereinigen von $_GET['id'] ist wirklich wichtig. Sie können mysql_real_escape_string() verwenden, aber für Ganzzahlen reicht es aus, es in eine int zu konvertieren. Grundsätzlich möchten Sie die SQL-Injection vermeiden.

0
cletus

Was ist der Typ von "IDNO" in Ihrer Datenbank? Möglicherweise müssen Sie das SQL hier entkommen:

$result = mysql_query("SELECT * FROM student WHERE IDNO=".$_GET['id']);
0
zaf

Sie benutzen das:

mysql_fetch_array($result)

Um die Fehlermeldung zu erhalten, die Sie erhalten, bedeutet dies, dass $result keine Ressource ist.


In Ihrem Code wird $result folgendermaßen erhalten:

$result = mysql_query("SELECT * FROM student WHERE IDNO=".$_GET['id']);

Wenn die SQL-Abfrage fehlschlägt, ist $result keine Ressource, sondern ein Boolean - siehe mysql_query .

Ich nehme an, es gibt einen Fehler in Ihrer SQL-Abfrage - also schlägt sie fehl, mysql_query gibt einen Booleschen Wert und keine Ressource zurück und mysql_fetch_array kann nicht damit arbeiten.


Sie sollten überprüfen, ob die SQL-Abfrage ein Ergebnis zurückgibt oder nicht:

$result = mysql_query("SELECT * FROM student WHERE IDNO=".$_GET['id']);
if ($result !== false) {
    // use $result
} else {
    // an error has occured
    echo mysql_error();
    die;    // note : echoing the error message and dying 
            // is OK while developping, but not in production !
}

In diesem Fall sollten Sie eine Meldung erhalten, die den Fehler angibt, der während der Ausführung Ihrer Abfrage aufgetreten ist. Dies sollte helfen, das Problem zu ermitteln.


Außerdem sollten Sie die Daten, die Sie in Ihre SQL-Abfrage einfügen, mit Escapezeichen versehen, um SQL-Injektionen zu vermeiden.

Zum Beispiel sollten Sie hier sicherstellen, dass $_GET['id'] nichts anderes als eine ganze Zahl enthält. Verwenden Sie beispielsweise Folgendes:

$result = mysql_query("SELECT * FROM student WHERE IDNO=" . intval($_GET['id']));

Oder Sie sollten dies überprüfen, bevor Sie versuchen, die Abfrage auszuführen, um dem Benutzer eine schönere Fehlermeldung anzuzeigen.

0
Pascal MARTIN