Dupliquer possible:
"Attention: mysql_fetch_array () s'attend à ce que le paramètre 1 soit ressource, booléen étant donné" erreur en essayant de créer un panier php
Je ne comprends pas, je ne vois aucune erreur dans ce code mais il y a cette erreur, aidez s'il vous plaît:
mysql_fetch_array () s'attend à ce que le paramètre 1 soit un problème de ressource
<?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 } ?>
J'essaie simplement de charger les données dans les formulaires mais je ne sais pas pourquoi cette erreur apparaît. Quelle pourrait être l'erreur ici?
Vous ne faites pas error check après l'appel à mysql_query :
$result = mysql_query("SELECT * FROM student WHERE IDNO=".$_GET['id']);
if (!$result) { // add this check.
die('Invalid query: ' . mysql_error());
}
Si mysql_query
échoue, il retourne false
, une valeur boolean
. Lorsque vous passez ceci à la fonction mysql_fetch_array
(qui attend un mysql result object
), nous obtenons cette erreur.
$id = intval($_GET['id']);
$sql = "SELECT * FROM student WHERE IDNO=$id";
$result = mysql_query($sql) or trigger_error(mysql_error().$sql);
toujours le faire de cette façon et il vous dira ce qui ne va pas
Essayez ceci
$indo=$_GET['id'];
$result = mysql_query("SELECT * FROM student WHERE IDNO='$indo'");
Je pense que ça marche ..
Assurez-vous que votre requête a été exécutée avec succès et que vous avez obtenu les résultats. Vous pouvez vérifier comme ceci:
$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....
}
La cause la plus probable est une erreur dans mysql_query()
. Avez-vous vérifié pour vous assurer que cela a fonctionné? Afficher la valeur de $result
et mysql_error()
. Vous avez peut-être mal orthographié quelque chose, sélectionné la mauvaise base de données, rencontré un problème d'autorisations, etc. Ainsi:
$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());
}
Désinfecter $_GET['id']
est vraiment important. Vous pouvez utiliser mysql_real_escape_string()
mais le convertir en int
suffit pour les entiers. En gros, vous voulez éviter l'injection SQL.
Dans votre base de données, quel est le type de "IDNO"? Vous devrez peut-être échapper au SQL ici:
$result = mysql_query("SELECT * FROM student WHERE IDNO=".$_GET['id']);
Vous utilisez ceci:
mysql_fetch_array($result)
Pour obtenir l'erreur que vous obtenez, cela signifie que $result
n'est pas une ressource.
Dans votre code, $result
est obtenu de cette façon:
$result = mysql_query("SELECT * FROM student WHERE IDNO=".$_GET['id']);
Si la requête SQL échoue, $result
ne sera pas une ressource mais un booléen - voir mysql_query
.
Je suppose qu'il y a une erreur dans votre requête SQL - elle échoue donc, mysql_query
renvoie un booléen, et non une ressource, et mysql_fetch_array
ne peut pas fonctionner avec cela.
Vous devriez vérifier si la requête SQL renvoie ou non un résultat:
$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 !
}
Avec cela, vous devriez recevoir un message indiquant l'erreur survenue lors de l'exécution de votre requête - cela devrait vous aider à comprendre le problème ;-)
De même, vous devriez échapper les données que vous mettez dans votre requête SQL pour éviter injections SQL !
Par exemple, ici, vous devez vous assurer que $_GET['id']
ne contient rien d'autre qu'un entier, en utilisant quelque chose comme ceci:
$result = mysql_query("SELECT * FROM student WHERE IDNO=" . intval($_GET['id']));
Ou vous devriez vérifier ceci avant d'essayer d'exécuter la requête, pour afficher un message d'erreur plus sympathique à l'utilisateur.