Mysql_fetch_array() ожидает, что параметр 1 будет ресурсом, boolean

<title>Untitled Document</title>

<!--?php 
 $con = mysql_connect("localhost","root","");
 if(!$con)
 {
 die("cannot connect" . mysql_error());
 }
 mysql_select_db("library",$con);

 $sql = "SELECT Renewal_Date FROM ilist where Student_Id=?";
 $mydata = mysqli_query($sql,$con);
 $result_array = array();
 echo "<table border=2 -->
 

 Renewal_Date
 ";


 while($record = mysql_fetch_array($mydata)){

 echo"";
 echo "" . $record['Renewal_Date'] . "";
 echo "";
 $todayDate = date('m/d/Y');
 $date1 = new DateTime($todayDate);
 $date2 = new DateTime($record['Renewal_Date']);
 if($date2 < $date1)
 {
 $interval = $date1->diff($date2); 
 echo "difference " . $interval->y . " years, " . $interval->m." months, ".$interval->d." days ";
 echo"<p><code>";
 $extradays=$interval-&gt;m;
if($extradays==1)
{
 $eday=1;
 }else if($extradays==3){
 $eday=2;
 } else if($extradays==5){
 $eday=3;
 } else if($extradays==7){
 $eday=4;
 } else if($extradays==8){
 $eday=5;
 } else if($extradays==10){
 $eday=6;
 } else if($extradays==12){
 $eday=7;
 }
 else{
 $eday=0;
 }

$yd= $interval-&gt;y*365*3+$interval-&gt;d*3;

 $ydm=$yd+$interval-&gt;m*30*3;
 $ydm=$ydm+($eday*3);
 echo $ydm;
}
else
{
 echo $ydm=0;
 }
}
?&gt;</code> </p><p> тот же код работал на моем рабочем столе, но в ноутбуке он показывает mysql_fetch_array() ожидает, что параметр 1 будет ресурсом, boolean given... error in while loop. в чем причина? я просто хочу получить дату обновления из базы данных и выполнить некоторые вычисления. логика полностью прекрасна, так как она отлично работает на моем рабочем столе, но в ноутбуке эта ошибка происходит, пожалуйста, помогите. '</p>
3 ответа

Первый : Прекратите использование mysql_query, поскольку он устарел. Второе: даже если вы его используете. PLease не смешивает его с mysqliВ-третьих: если вы использовали заполнитель в своем запросе, пожалуйста, не забудьте также привязать значение

$sql = "SELECT Renewal_Date FROM ilist where Student_Id=?";

Вы забыли привязать стоимость ?


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

Эта ошибка возникает из- $mydata значение $mydata самом деле false.

mysqli_query/mysql_query возвращают ресурс, если SQL-запрос был успешно выполнен и false значение, если произошла ошибка.

Как решить проблему:

  1. Прежде всего будьте последовательны при использовании функций MySQL (вы используете оба: mysql_ и mysqli_);
  2. Заменить ? с escaped значением в SQL statment $sql = "SELECT Renewal_Date FROM ilist where Student_Id=?"; или bind значение с расширением Mysqli.

PS: Общий совет - не использовать расширение mysql_ оно устарело. Mysqli этого используйте PDO или Mysqli.


Перед тем, как попытаться использовать его, вам нужно проверить результат своего запроса. Если есть ошибка, возвращаемое значение будет ложным (то есть логическим, а не ресурсом MySQL). Когда это произойдет, вы можете узнать, что пошло не так, вызвав mysqli_error(). Это должно помочь вам выявить проблему.

licensed under cc by-sa 3.0 with attribution.