mysqli insert在重复项上不返回false

时间:2012-08-26 16:53:10

标签: php mysqli prepared-statement

我有一个将新用户插入数据库的功能。如果输入有些不好或者用户名或电子邮件已经令人兴奋,我希望它返回false。

这就是它的样子:

public function input( $username, $password, $email ){
    if( $stmt = $this->mysqli->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)" )){

        $stmt->bind_param('sss', $username, $password, $email);
        $stmt->execute();
        $stmt->close();
        $this->mysqli->close();

        return true;
    }
    else{
        return false;
    }
}

它完全正常,直到我尝试创建副本,它返回true,但不会影响数据库中的tabledata,我可以看到。

2 个答案:

答案 0 :(得分:2)

return !!$this->mysqli->insert_id; // instead of true

答案 1 :(得分:0)

如果prepare失败,您的函数只返回false - 您之后才会添加数据。

您可以检查insert语句的返回值,以查看它实际返回的内容,以查看INSERT是否成功。

此外,您的问题标题和标签表明您正在使用mysqli,但您的函数调用都是mysql_* - 是一个或另一个错字?