У меня есть код последующие:Вложенные запросы 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;
}
}
Когда я запускаю его, я получаю «Фатальная ошибка: Вызов функции-члена выборки() на не-объект в/корневым/дома/веб/HTML/тест .php в строке 29 "строка 29 является линией« while ($ catrow ... »)
На моем dev-сервере, хотя это работает. Что я должен проверять, чтобы выяснить, как заставить его работать над производством сервер? Я понятия не имею, почему это произойдет. Если я переведу код из первого цикла 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/>");
Когда я запустил это, первый цикл запускается, после чего я получаю список категорий в порядке. Я знаю, что не могу выполнить Stack Overflow для устранения неполадок с моим сервером, но если у кого-то есть представление о том, какая настройка или какая-либо другая проблема вызвала бы такое поведение, я бы очень признателен за любые советы :)
Что такое 'ISNULL (deleted)'? –
deleted - это поле datetime в MySQL, чтобы сообщить мне дату/время, когда человек, помеченный как удаленный. Мне не нравится удалять вещи, я просто отмечаю их как таковые и скрываю. Вид «корзины», я полагаю. Если я копирую запрос в phpMyAdmin и выполняю его там, я получаю результаты в порядке. – Ken
Мне интересно, что делает функция Write(). Не могу представить, какой код он может состоять. –