我在android上创建了一个应用程序,数据库正确注册了用户,但没有发送电子邮件,并且应用程序显示了我的错误消息“此刻无法注册用户”,不知道我在做什么 这是带有注册表功能的php的一部分
//function to register and add user email and password to the database
public function registerUser($name,$email,$password){
if($this->verifyEmailExists($email,"email") == FALSE){
//$data = [':name' => $name,':email' => $email,':password' => password_hash($password, PASSWORD_DEFAULT),':date' => date('Y-m-d H:i:s')];
//$sql = "INSERT INTO tbl_android_users (name, email, password,date) VALUES (:name, :email, :password, :date)";
//$stmt= $this->db->conn_id->prepare($sql);
//$stmt->execute($data);
//$insertid = $this->db->conn_id->lastInsertId();
$data = array('name' => $name,'email' => $email,'password' => password_hash($password, PASSWORD_DEFAULT),'login_type'=>"email",'date' => date('Y-m-d H:i:s'));
$this->db->trans_start();
$this->db->insert('tbl_android_users', $data);
$insertid = $this->db->insert_id();
$this->db->trans_complete();
//echo $insertid; die;
if ($insertid){
$this->status = "ok";
$this->message = "User registered successfully, We sent a verification code to your email address, Click on the link to verify your email address.";
$this->user = $this->getUpdatedUser($email);
}else{
$this->status = "error";
$this->message = "Cant register user at the moment";
}
}else{
$this->status = "error";
$this->message = "Email or Phone already exists";
}
}
非常感谢
答案 0 :(得分:0)
您的if block
检查失败,因为只有在$insertid
为true
的情况下它才起作用。这也意味着$insertid
的数据类型必须为Boolean
。
我建议在此行放置一个断点:
$insertid = $this->db->insert_id();
并尝试注册用户。查看#insertid是什么值。它必须为null或false
,因为这就是代码失败的原因。
如果您的$ insertid是null
,那么请检查您的存储库中以下函数是否返回任何内容:
$this->db->insert_id()
从逻辑上讲,它应该返回一个Boolean
或它试图插入的数据类型作为返回值。
答案 1 :(得分:0)
您应该在访问InsertID属性之前关闭事务。首先尝试执行on duplicate key
,然后再尝试使用loc