【发布时间】:2011-04-07 10:22:34
【问题描述】:
我正在浏览有关使用 db 制作菜单的视频教程。我没有像视频中那样使用程序 PHP 来做,而是尝试用准备好的语句 OOP 风格来做。它不起作用,我不知道为什么。
它运行良好,直到第 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->fetch();里面做prepared statement是不可能的吗?
【问题讨论】:
-
您使用的是 mysqli 扩展,对吧?您是否考虑过使用 PDO 代替?使用 PDO,您可以将异常作为“错误处理程序”,这使您更难错过 sql 错误(在这种情况下,最有可能是由第 16 行引起的错误;-))
-
是的,是mysqli,但不是sql错误。在终端中运行 SQL 查询,运行良好。
标签: php mysql prepared-statement