我有如下代碼:嵌套的PDO查詢失敗?
$sql = $pdo->query("SELECT pageid FROM webpages WHERE ISNULL(deleted) ORDER BY sortindex");
while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {
switch ($row["pageid"]) {
case "information":
Write(" <li class='top'><a href='index.php?m=info' id='info' class='top_link'><span class='down'>Information</span></a>");
Write(" <ul class='sub'>");
Write(" <li><a href='index.php?m=info&submode=n'>News</a></li>");
Write(" <li><a href='index.php?m=info&submode=e'>Events</a></li>");
Write(" <li><a href='index.php?m=info&submode=m'>Minutes</a></li>");
$subsql = $pdo->query("SELECT * FROM categories WHERE visible = 1 ORDER BY sortindex,category");
while ($catrow = $subsql->fetch(PDO::FETCH_ASSOC)) Write(" <li><a href='index.php?m=info&cat={$catrow["cid"]}'>{$catrow["category"]}</a></li>");
Write(" </ul>");
break;
}
}
當我運行它,我得到「致命錯誤:調用一個成員函數取()在/ chroot /家庭/網絡/ HTML /測試一個非對象第29行「第29行是」while($ catrow ...「)行
在我的開發服務器上,雖然它有效,應該怎麼檢查才能弄清楚如何使它在生產環境中工作服務器?我不知道爲什麼它會失敗,如果我將代碼移出第一個SQL循環,它在生產中可以正常工作,這是沒有問題的:
$sql = $pdo->query("SELECT pageid FROM webpages WHERE ISNULL(deleted) ORDER BY sortindex");
while ($row = $sql->fetch(PDO::FETCH_ASSOC)) {
switch ($row["pageid"]) {
case "information":
Write(" <li class='top'><a href='index.php?m=info' id='info' class='top_link'><span class='down'>Information</span></a>");
Write(" <ul class='sub'>");
Write(" <li><a href='index.php?m=info&submode=n'>News</a></li>");
Write(" <li><a href='index.php?m=info&submode=e'>Events</a></li>");
Write(" <li><a href='index.php?m=info&submode=m'>Minutes</a></li>");
Write(" </ul>");
break;
}
}
$subsql = $pdo->query("SELECT * FROM categories WHERE visible = 1 ORDER BY sortindex,category");
while ($catrow = $subsql->fetch(PDO::FETCH_ASSOC)) Write("Cat: {$catrow["category"]}<br/>");
當我運行它時,第一個循環運行,然後我得到類別列表罰款。我知道我不能確切的堆棧溢出來解決我的服務器故障,但如果有人有一個想法什麼樣的配置調整或其他問題會導致這種行爲,我將不勝感激任何提示:)
什麼是'ISNULL(刪除)'? –
已刪除的是MySQL中的日期時間字段,以讓我知道內容人員將其標記爲已刪除的日期/時間。我不喜歡真正刪除東西,我只是將其標記爲隱藏起來。我想是一種「回收站」。如果我將查詢複製到phpMyAdmin並在那裏執行,我會得到很好的結果。 – Ken
我想知道Write()函數做了什麼。無法想象它可能包含哪些代碼。 –