【发布时间】:2017-02-20 22:09:48
【问题描述】:
我正在处理一个 While 循环内的查询。但是,第二次运行不起作用。 (While 稍后结束,在一些结果得到回显之后)。我尝试调用第二个查询$stma,但这导致了同样的错误。
错误
Fatal error: Call to a member function bind_param() on a non-object in PATH on line 96
代码
// Prepare Query
$stmt = $db->prepare("SELECT id, fullname, shortname FROM languages WHERE (state = '0')");
$stmt->execute();
// Get result from query.
$stmt->bind_result($lang_id, $lang_name, $lang_short);
// While Loop
while($language = $stmt->fetch()){
// Get Language Texts
$stmt = $db->prepare("SELECT id, article_id, article_language, article_text, article_recuse, article_spec FROM article_content WHERE article_id = ? AND article_language = ?");
$stmt->bind_param("is", $artikel_nummer, $lang_short); // This is line 96.
$stmt->execute();
// Get result from query.
$stmt->bind_result($t_id, $t_articleid, $t_language, $t_text, $t_recuse, $t_spec);
$stmt->fetch();
我对准备好的语句相当陌生,所以我不确定到底是什么问题。我在查询上运行了 var_dump() 并返回 false,但是,在其他地方或 WHILE 循环之外运行查询正在工作(当我手动定义两个变量时)。
我已经回显了$artikel_nummer 和$lang_short,它会返回它们的值。
问题如下:为什么第二个查询没有运行,并因此返回上述错误?
【问题讨论】:
-
你没有对循环使用
$language做任何事情,也没有为$lang_id或$lang_name做任何事情。 -
您正在覆盖您的
$stmt变量,同时仍试图在每次迭代中从中获取数据 -
在将值绑定到它之前,您正在执行该语句。
-
@Phil 我的意思是在第 3 行
-
@Mike 那是使用
bind_result的正确方法