mysql_fetch_array () ожидает, что параметр 1 будет проблемой ресурса

Возможный дубликат:
Msgstr “Предупреждение: mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, boolean данный” ошибка при попытке создания корзины php

Я не понимаю, я не вижу ошибок в этом коде, но есть эта ошибка, пожалуйста, помогите:
mysql_fetch_array () ожидает, что параметр 1 будет проблемой ресурсов

  

Я просто пытаюсь загрузить данные в формы, но я не знаю, почему эта ошибка появляется. Что может быть ошибкой здесь?

Вы не выполняете проверку ошибок после вызова mysql_query :

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

В случае mysql_query он возвращает false , boolean значение. Когда вы передаете это функции mysql_fetch_array (которая ожидает mysql result object ), мы получаем эту ошибку.

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

всегда делайте это так, и он скажет вам, что не так

Попробуйте

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

Я думаю, это работает ..

Наиболее вероятной причиной является ошибка в mysql_query() . Вы проверили, чтобы убедиться, что это сработало? Выведите значение $result и mysql_error() . Возможно, у вас что-то написано неправильно, выбрана неправильная firebase database, есть проблема с разрешениями и т. Д. Итак:

 $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()); } 

Санитирование $_GET['id'] действительно важно. Вы можете использовать mysql_real_escape_string() но приведение его к int достаточно для целых чисел. В основном вы хотите избежать SQL-инъекции.

Убедитесь, что ваш запрос успешно запущен, и вы получили результаты. Вы можете проверить следующее:

 $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.... } 

В вашей базе данных какой тип «IDNO»? Вам может понадобиться избежать sql здесь:

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

Вы используете это:

 mysql_fetch_array($result) 

Чтобы получить ошибку, которую вы получаете, это означает, что $result не является ресурсом.

В вашем коде $result получается следующим образом:

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

Если SQL-запрос mysql_query ошибкой, $result не будет ресурсом , а логическим – см. mysql_query .

Я предполагаю, что в вашем SQL-запросе есть ошибка – так что это не удается, mysql_query возвращает логическое, а не ресурс, а mysql_fetch_array не может работать над этим.

Вы должны проверить, возвращает ли SQL-запрос результат или нет:

 $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 ! } 

При этом вы должны получить сообщение, указывающее на ошибку, возникшую во время выполнения вашего запроса, – это должно помочь выяснить, в чем проблема 🙂

Кроме того, вам следует избегать данных, которые вы вставляете в ваш SQL-запрос, чтобы избежать инъекций SQL !

Например, здесь вы должны убедиться, что $_GET['id'] содержит не что иное, как целое число, используя что-то вроде этого:

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

Или вы должны проверить это, прежде чем пытаться выполнить запрос, чтобы отобразить пользователю более приятное сообщение об ошибке.


Update Students
*ID Number: <input name="idnum" onkeypress="return isNumberKey(event)" type="text" maxlength="5" id='numbers'/ value="">
*Year: <input name="yr" onkeypress="return isNumberKey(event)" type="text" maxlength="5" id='numbers'/ value="">