数据库正确注册用户,但没有发送电子邮件

时间:2020-04-21 20:33:01

标签: php android mysql database phpmyadmin

我在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";
     }

   }

非常感谢

2 个答案:

答案 0 :(得分:0)

您的if block检查失败,因为只有在$insertidtrue的情况下它才起作用。这也意味着$insertid的数据类型必须为Boolean

我建议在此行放置一个断点:

$insertid = $this->db->insert_id();

并尝试注册用户。查看#insertid是什么值。它必须为null或false,因为这就是代码失败的原因。

编辑

如果您的$ insertid是null,那么请检查您的存储库中以下函数是否返回任何内容:

$this->db->insert_id()

从逻辑上讲,它应该返回一个Boolean或它试图插入的数据类型作为返回值。

答案 1 :(得分:0)

您应该在访问InsertID属性之前关闭事务。首先尝试执行on duplicate key,然后再尝试使用loc

获取insertID。