PHP Предупреждение: mysql_query () ожидает, что параметр 1 будет строкой

Возможный дубликат:
mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, boolean задан в select

Надеюсь, вам будет быстро один из вас.

Я получаю две ошибки, связанные с:

Предупреждение: mysql_query () ожидает, что параметр 1 будет строкой, заданный массив

Мой код выглядит следующим образом …

<?php # # FUTURE EVENTS # # PAGE SELECTOR FUNCTION function pageselector ($pagenum, $pages, $arg, $perpage) { #page we're loading if (!$pagenum) $pagenum=1; # PRINT PAGE SELECTOR $pages=ceil($pages/$perpage); #last = prev page unless we're already at page 1 if ($pagenum==1) {$last=1;} else {$last=$pagenum-1;} #next = next page unless we have no more pages to display if ($pagenum==$pages) $next=$pagenum; else $next=$pagenum+1; #create page numbers $pagenumbers=""; for ($i=1; $i<=$pages; $i++) { if ($i==$pagenum) $pagenumbers.=$i.' '; else $pagenumbers.="<a href=\"?pagenum=$i$arg\">$i</a> "; } # create page num in case of blank page if (!$pagenumbers) { $pagenumbers="<a href=\"?pagenum=1$arg\">1</a> "; } print <<< pageSelector <div class="pageselector"> Page: <a href="?pagenum=1$arg">&laquo;</a> <a href="?pagenum=$last$arg">&lsaquo;</a> $pagenumbers <a href="?pagenum=$next$arg">&rsaquo;</a> <a href="?pagenum=$pages$arg">&raquo;</a> </div><br /> pageSelector; return $pagenum; } $perpage=3; $now=time()-(1 * 24 * 60 * 60); $sql="SELECT count(*) AS total FROM event_tbl WHERE dates>'$now'"; $sql=mysql_query($sql); $pagenum=pageselector ($pagenum, $sql['total'], '', $perpage); $eventlist=array(); $sql="SELECT * FROM event_tbl WHERE dates>'$now' ORDER BY dates ASC"; $sql=mysql_query($sql); $sql=mysql_fetch_array($sql); while ($sqlevent=mysql_query($sql)){ $eventlist[]=$sqlevent['id']; } for ($i=0; $i<$perpage; $i++) { $tempid=($perpage*($pagenum-1))+$i; $sql="SELECT * FROM event_tbl WHERE id='$eventlist[$tempid]'"; $sql=mysql_query($sql); $smallevent=mysql_query($sql); if ($smallevent['dates']==0) break; print '<div>'; $smallevent['description']=strip_tags($smallevent['description'], '<img>'); $shortdescription=substr($smallevent['description'], 0, 350); print '<span style="font-size: 14px;"><b><a href="./event.php?event='.$smallevent['id'].'">'.$smallevent['name'].'</a></b> - <b>Date:</b> '.date('j/n/Y', $smallevent['dates']).' - <b>Price:</b> '; $places=$smallevent['placesavailable']-$smallevent['placesbooked']; if ($places>0) print '&pound;'.$smallevent['price'].'<br />'; else print '<span class="soldout">SOLD OUT</span><br />'; print '</span><br />'; print $shortdescription.'...'; print '<br /><br />'; print '<a href="./tellfriend.php?event='.$smallevent['id'].'"><img src="./images/link-tellfriend.png" alt="" /></a> &nbsp;'; print '<a href="http://maps.google.com/maps?daddr='.$smallevent['postcode'].'" target="_blank"><img src="./images/link-directions.png" alt="" /></a> &nbsp;'; print '<a href="./event.php?event='.$smallevent['id'].'"><img src="./images/link-info.png" alt="" /></a> &nbsp;'; if ($smallevent['bookless']==0 & $places>0) print '<a href="./bookevent.php?event='.$smallevent['id'].'"><img src="./images/link-book.png" alt="" /></a> '; print '</div><br /><br />'; } ?> 

Две строки ошибок:

 while ($sqlevent=mysql_query($sql)){ $eventlist[]=$sqlevent['id']; } $smallevent=mysql_query($sql); 

У меня есть файл DB Connect (хотя не уверен, что его запуск или нет?)

Любая помощь оценивается.

ура

 $eventlist=array(); $sql="SELECT * FROM event_tbl WHERE dates>'$now' ORDER BY dates ASC"; $sql=mysql_query($sql); $sql=mysql_fetch_array($sql); while ($sqlevent=mysql_query($sql)){ $eventlist[]=$sqlevent['id']; } 

Ошибка довольно ясна. По какой-то причине (я не знаю, что), вы снова вызываете mysql_query с массивом.

Возможно, вы имели в виду:

 $eventlist=array(); $sql = "SELECT * FROM event_tbl WHERE dates > '$now' ORDER BY dates ASC"; $res = mysql_query($sql); while ($sqlevent = mysql_fetch_array($res)) { $eventlist[] = $sqlevent['id']; } 

Вы должны использовать разные имена для своих переменных. Незадолго до неисправности:

 $sql=mysql_query($sql); $sql=mysql_fetch_array($sql); 

Вторая строка присваивает результат mysql_fetch_array переменной с именем $sql которая больше не является строкой. Например, вы можете использовать $ sql_result .

Однако, читая ваш код, я думаю, что есть и другие ошибки. Например, я думаю, вы хотите сделать что-то вроде этого:

 $result = mysql_query($sql); while ($row = mysql_fetch_array($result)){ $eventlist[] = $row['id']; } 

mysql_query предназначен для получения результатов запроса, а затем вы можете прочитать результаты с помощью mysql_fetch_array . Вы не mysql_query напрямую использовать результат mysql_query . В связанной документации есть много хороших примеров, вы должны их прочитать.

Вторая проблема в точности такая же.

 $sql=mysql_fetch_array($sql); while ($sqlevent=mysql_query($sql)){ $eventlist[]=$sqlevent['id']; } 

$ sql – массив, так как mysql_fetch_array возвращает массив !!! попробуйте использовать другую переменную!


 $eventlist=array(); $sql="SELECT * FROM event_tbl WHERE dates>'$now' ORDER BY dates ASC"; $result=mysql_query($sql,$connection); $sql=mysql_fetch_array($result); 

….