以下代码将在屏幕上显示“12”。就这些。添加了这些回声编号以进行调试。
它应该显示“123”并将语句中的变量插入 MySQL 数据库。出于某种原因,它只在准备语句处结束。fail() 错误检查永远不会被调用。实际上,在准备语句之后没有调用任何内容。
我一直在整个网站上,并相信我正在正确地做所有需要的事情,但这更有可能是我做的事情。
谁能告诉我为什么准备语句以这种方式失败?
$query = "insert into member(mail, user, val) values (?, ?, ?)";
$uuu = blah@blah.com;
$hhh = Blah Williams;
$val = 0;
echo "1";
if($stmt = $this->conn)
{
echo "2";
$stmt->prepare($query) || $this->fail('MySQL prepare', $stmt->error);
echo "3";
$stmt->bind_param('ssi', $uuu, $hhh, $val)
|| $this->fail('MySQL bind_param', $stmt->error);
$stmt->execute();
if (!$stmt->execute())
{
if ($stmt->errno === 1062 /* ER_DUP_ENTRY */)
{
$this->fail('This username is already taken');
}
else
{
$this->fail('MySQL execute', $stmt->error);
}
}
}
else
{/*error check*/
$this->fail('MySQL insert prepare failed', $stmt->error);
return 0;
}
$stmt->close();
return true;