PHP Prepare语句失败


PHP Prepare statement failure

下面的代码将在屏幕上显示"12"。就这些。添加这些回显数是为了调试。

应该显示"123"并将语句中的变量插入到MySQL数据库中。由于某些原因,它只在prepare语句结束。fail()错误检查永远不会被调用。实际上,在prepare语句之后没有调用任何内容。

我已经遍历了整个网站,并相信我做了所有需要做的事情,但这更像是我做了什么。

谁能告诉我为什么准备语句失败这种方式?

$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;

你应该使用as你的赋值将永远为真。

$stmt = $this->conn->prepare($query);

检查失败的原因,使用:

var_dump($stmt->errorInfo());