【发布时间】:2013-01-12 01:55:46
【问题描述】:
我正在尝试创建一个函数来检查更新并插入一些数据,但我在第一步中遇到了一个问题,$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");
}
}
}
【问题讨论】:
-
我忘了提到这个问题发生在函数的第一行:$stmt->bind_param("ii",0,$victimiid);
-
我建议使用 PDO 对象,在这种情况下,您可以使用
$stmt->execute(array(0, $victimiid));而不必将参数与bind_param绑定 -
或者类似的东西?下次要更加注意确切的错误消息,并在适用时将它们发布在这里。这些消息是为了帮助你,而不仅仅是为了惹恼你。