我正在瀏覽關於使用數據庫執行菜單的視頻教程。我沒有像在視頻中那樣使用過程式PHP來做這件事,而是試着用準備好的語句OOP風格來做到這一點。它不起作用,我不明白爲什麼。PHP在準備好的語句中準備了語句
它運行良好,直到第17行,在那裏與此錯誤死亡:
Fatal error: Call to a member function bind_param() on a non-object in C:\wamp\www\widget_corp\content.php on line 17
而這裏的代碼:
<?php
$query = $connection->prepare('SELECT menu_name, id FROM subjects ORDER BY position ASC;');
$query->execute();
$query->bind_result($menu_name, $sid);
while ($query->fetch()){
echo "<li>{$menu_name} {$sid}</li>";
$query2 = $connection->prepare('SELECT menu_name FROM pages WHERE subject_id = ? ORDER BY position ASC;');
$query2->bind_param("i", $sid); //This is line 17
$query2->execute();
$query2->bind_result($menu_name);
echo "<ul class='pages'>";
while ($query2->fetch()){
echo "<li>{$menu_name}</li>";
}
echo "</ul>";
}
$query->close();
?>
是不可能內stmt-做一份準備好的聲明>取();?
您使用的是mysqli擴展,對不對?你有沒有考慮過使用PDO?對於PDO,你可以將異常設置爲「錯誤處理程序」,這會讓你更難以錯過sql錯誤(就像這種情況下最可能由第16行導致的錯誤;-)) – VolkerK 2011-04-07 10:27:36
是的,它是mysqli,但它不是sql錯誤。在終端中運行SQL查詢,工作正常。 – thekodols 2011-04-07 10:59:21