Intereting Posts
Http to Https перенаправление для wordpress на герою как выполнять некоторую функцию в определенное время неявно jQuery Validate Remote – проверьте, существует ли электронная почта Рекурсивная функция для генерации многомерного массива из результата базы данных жить изменить любые свойства визуализации сайта Загрузка файла Blueimp jQuery, передача данных дополнительной формы ErrorBag всегда пуст в Laravel 5.2 Неустранимая ошибка при вызове хранимой функции MySQL из PHP с использованием MySQLi ошибка парсера: ожидаемый стартовый тег, '<' не найден Как вы переименовываете тег в SimpleXML через объект DOM? Как я могу лучше защитить свои запросы php, jquery, ajax от злонамеренных пользователей PHP: исключения против ошибок? удаление элемента массива JSON в PHP и повторное кодирование как JSON move_uploaded_file () с работой Zend doens't Можно ли включить «Уведомление: попытка получить свойство не объекта» в фатальную ошибку?

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

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

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

<?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">*ID 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 } ?> 

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

Вы не выполняете проверку ошибок после вызова 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() . Возможно, у вас что-то написано неправильно, выбрана неправильная база данных, есть проблема с разрешениями и т. Д. Итак:

 $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'])); 

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