Возможный дубликат:
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">«</a> <a href="?pagenum=$last$arg">‹</a> $pagenumbers <a href="?pagenum=$next$arg">›</a> <a href="?pagenum=$pages$arg">»</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 '£'.$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> '; print '<a href="http://maps.google.com/maps?daddr='.$smallevent['postcode'].'" target="_blank"><img src="./images/link-directions.png" alt="" /></a> '; print '<a href="./event.php?event='.$smallevent['id'].'"><img src="./images/link-info.png" alt="" /></a> '; 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);
….