我正在尝试创建一个函数来检查更新并插入一些数据,但是我在第一步中遇到了一个问题,$stmt->bind_param说这不是通过引用或类似的东西传递参数。
我在下面附上了函数代码:
public function killTarget($killerid,$victimiid,$victimcode)
{
if ($this->checkUsercode($victimcode,$victimiid))
{
$stmt = $this->_db->prepare("UPDATE users SET status =? WHERE user_id =?");
$stmt->bind_param("ii",0,$victimiid);
if ($stmt->execute())
{
$stmt->store_result();
$stmt->fetch();
$stmt = $this->_db->prepare("SELECT victim_id FROM target WHERE killer_id = ?");
$stmt->bind_param("i",$victimiid);
if ($stmt->execute())
{
$stmt->store_result();
$stmt->bind_result($targetid);
$stmt->fetch();
$stmt = $this->_db->prepare("INSERT INTO target (killer_id, victim_id) VALUES (?,?)");
$stmt->bind_param("ii",$killerid,$targetid);
if ($stmt->execute())
{
$stmt->store_result();
$stmt->fetch();
$stmt->close();
}
}
}
else
{
Main::setMessage("targets.php",$this->_db->error,"alert-error");
}
}
}
你不能在 mysqli 中这样做:
$stmt->bind_param("ii",0,$victimiid);
0
需要是一个变量。
试试这个:
$zero = 0;
$stmt->bind_param("ii",$zero,$victimiid);
小心! mysqli_stmt::bind_param
接受对变量的引用,而不是常量值。因此,您必须创建一个变量来保存该0
然后引用该变量。
$i = 0;
$stmt->bind_param("ii", $i, $victimiid);
将 0 设为变量或直接将其包含在查询中。
$zero = 0;
$stmt->bind_param("ii", $zero, $victimiid);