为什么我的bind_param()
循环中的while
无法正常工作?
我得到了
致命错误:在...
中的非对象上调用成员函数bind_param()
我在这里要做的是显示user
表中的所有数据(如果$key
未设置),那么,
我想使用if
语句来区分显示的值。我试图在数据库管理器中执行准备好的查询,它的工作原理。但在这种情况下..我的查询似乎返回false。那么,任何想法?这是代码,
function cariTemen($key) {
require 'settings.php';
$my_id = $_SESSION['user_id'];
$stmt = $conn->prepare ("SELECT user_id,nama_asli FROM user WHERE username LIKE ? OR nama_asli LIKE ?");
$key = '%'.$key.'%';
$stmt->bind_param('ss',$key,$key);
$stmt->execute();
$stmt->bind_result($id,$nama);
//MODIFIED FROM HERE
while($stmt->fetch()) {
$temen_id = $id;
$username = $nama;
$temen = $conn->prepare("SELECT id_temenan FROM temenan WHERE temen_id = ? AND user_id = ?");
$temen->bind_param('ii',$temen_id,$my_id); //ERROR IS HERE
$temen->execute();
$temen->store_result();
$jml= $temen->num_rows;
if($jml > 0) {
echo $username.' [Temenan]<br>';
} else {
echo $username.' <a href="add.php?user_id='.$temen_id.'"">Temenin</a><br>';
}
}
$stmt->close();
}
提前感谢您提供的任何帮助。
as marcellorvalle表示mysql无法同时维护2个查询,在这种情况下,我需要将所有值存储到array()变量中。所以脚本会是这样的:
$user_id = array();
$username = array();
$i = 0;
while($stmt->fetch()) {
$user_id[$i] = $id;
$username[$i] = $nama;
$i++;
}
$stmt->close();
for ($j= 0 ; $j <= $i; $j++) {
$temen = $conn->prepare("SELECT id_temenan FROM temenan WHERE temen_id = ? AND user_id = ?");
$temen->bind_param('ii',$user_id[$j],$my_id);
$temen->execute();
$temen->store_result();
$jml= $temen->num_rows;
if($jml > 0) {
echo '<a href="profil.php?user_id='.$user_id[$j].'"">'.$username[$j].'</a> [TeMeNan]<br>';
} else {
echo ' <a href="profil.php?user_id='.$user_id[$j].'"">'.$username[$j].'</a> <a href="add.php?user_id='.$user_id[$j].'"">[TeMeNin]</a><br>';
}
}
$temen->close();
答案 0 :(得分:0)
bind_param()
不起作用,prepare()
。store_result()
先查询。答案 1 :(得分:-1)
根据消息,$ temen似乎不是一个对象。尝试使用var_dump($ temen)调试它。似乎$ conn-&gt; prepare因某种原因返回 false 而 false 不是对象。
您可以检查回显$ conn-&gt;错误的任何错误,看看发生了什么。