Php mysqli insert在重复项上不返回false
我有一个向数据库插入新用户的函数。如果输入有点不好,或者用户名或电子邮件已经激活,我希望它返回false 这就是它看起来的样子:Php mysqli insert在重复项上不返回false,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我有一个向数据库插入新用户的函数。如果输入有点不好,或者用户名或电子邮件已经激活,我希望它返回false 这就是它看起来的样子: public function input( $username, $password, $email ){ if( $stmt = $this->mysqli->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)" )){ $stmt-&
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。如果
准备失败,您的函数只会返回false-在此之前,您不会添加数据
return !!$this->mysqli->insert_id; // instead of true
您可以检查insert语句的返回值,以查看实际返回的内容,以及insert是否成功
此外,您的问题标题和标记表明您正在使用mysqli,但您的函数调用都是针对mysql.*
-这两个调用是打字错误吗?您的数据库结构中是否定义了PK或复合键?我有一个名为ID的PK,可以自动递增。我也有属性电子邮件和用户名设置为唯一的。在那里,修复了它!你刚才提到的函数调用只是一个变量名。该死,我把mysql变量名编辑成了mysqli,所以现在你的答案有错了!很抱歉