2013-03-31 86 views
0

我有这两个函数用于创建user.first函数来插入/创建用户和其他函数,以检查用户是否存在于MySql数据库中。但是当我发送数据,我看到空白页die(); (如果用户exsit或用户不存在)如何解决这个错误?以及如何打印错误列表中红框即:PHP:使用mysqli查询存在检查行

- this user not activate 

- email is empty 

- .... 

我的课:

public function createUser($email, $password, $salt, $verification) { 

if($this->checkUserFound($email) != true){die();} 

    $query = "INSERT INTO tbUsers (email, password, user_salt, is_verified, is_active, is_admin, verification_code) " 
    . "VALUES (?, ?, ?, ?, ?, ?, ?)"; 

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

    $ver = 0; 
    $act = 1; 
    $adm = 0; 

    $stmt->bind_param("sssiiis", $email, $password, $salt, $ver, $act, $adm, $verification); 

    if ($stmt->execute()) { 
     return true; 
    } 

    return false; 
} 

public function checkUserFound($email) { 
    $query = "SELECT email FROM tbUsers where email = ?"; 

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

    $stmt->bind_param("s", $email); 

    if ($stmt->execute()) { 

     $stmt->bind_result($email); 

     //fetch first row of results 
     $stmt->fetch(); 
     return false; 
    } 

    return true; 
} 
+0

检查'mysqli_num_rows':如果不存在则为0,如果存在则为1。 – enapupe

+0

@enapupe:在checkUserFound函数中?或在'if($ this-> checkUserFound($ email)!= true){die();}'?! –

+0

在checkUserFound里面,只有当SQL有一个结果行时,它才返回true(或用户ID)。我不知道你使用的类,但是你必须有一些函数,像$ stmt-> num_rows()。无论如何,你为什么总是在你的函数上返回false? – enapupe

回答

1

这总是要返回FALSE(假设查询执行成功):

if ($stmt->execute()) { 

    $stmt->bind_result($email); 

    //fetch first row of results 
    $stmt->fetch(); 
    return false; 
} 

您想将其更改为:

if ($stmt->execute()) { 

    $stmt->store_result(); 


    return 0 == $stmt->num_rows ? FALSE : TRUE; 

} 

然后,如果找到用户,它将返回TRUE;如果不是,如果将返回FALSE

而且,我认为它更有意义(语义)有这样的:

if($this->checkUserFound($email)){die();} 

...因为你想,如果用户发现它返回TRUE(和结束脚本,因为你不” t要插入一个副本)。/

+0

如何在用户存在的红色框中打印错误列表? –

0
if ($stmt->execute()) { 

     $stmt->bind_result($email); 

     //fetch first row of results 
     $stmt->fetch(); 
     return true; 
    } 

    return false;