我想用一个内部连接来设置一个MYSQLI语句,它作为一个mysql_query运行良好,但现在SQL不能工作。
我假设我收到了非对象错误,因为SQL无法返回成功。我不明白,因为所有的表列名称完全匹配,就像我说它作为一个旧的mysql_result,我们有MYSQLI在页面的其他地方工作。桌子本身会有腐败吗?
错误:
警告:mysqli.prepare()[mysqli.prepare]:无法在第123行的file.php中获取mysqli
致命错误:在第123行的file.php中的非对象上调用成员函数execute()
代码:
<?php
$stmt = $db->prepare("SELECT A.ID, A.HEADER, A.CONTENT, A.PICTURE, A.CATEGORY_ID, C.ID, C.CATEGORY FROM ARTICLES A INNER JOIN ARTICLE_CATEGORY C ON A.CATEGORY_ID=C.ID ORDER BY C.CATEGORY, A.ID DESC");
$stmt->execute();
if ($stmt->bind_result($ID, $HEADER, $CONTENT, $PICTURE, $CATEGORY))
{
...
...
while($stmt->fetch())
{
...
...
...
}
}
?>
注意:来自asp.net我在mysqli非常棒,但我很确定我没有使用OO方法。
我在另一个略有不同的案例中找到答案: Problem with mysqli fetch
但是这个答案需要$ stmt-&gt; store_result()和嵌套的$ stmt单位,我只需要清除它们,这样prepare()可以有工作空间。
原来答案是我错过了$ stmt-&gt; free_result();和$ stmt-&gt; close();另外,对于一页上的3个循环,$ stmt变量名称需要保持不同,例如:$ stmt1,$ stmt2,$ stmt3