0

私は、ユーザーを挿入/作成するためのuser.first関数と、ユーザーがデータベースに/存在するかどうかをチェックするための他の関数を作成するためのこの2つの関数を持っていMySqlます。しかし、データを送信すると、die(); の空白ページが表示されます。(ユーザーが存在するかユーザーが存在しない場合)このエラーを修正するにはどうすればよいですか?エラーリストを赤いボックスに出力する方法:

- 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;
}
4

2 に答える 2

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ユーザーが見つかった場合に返すためです(重複を挿入したくないため、スクリプトを終了します)/

于 2013-03-31T13:28:54.350 に答える
0
if ($stmt->execute()) {

        $stmt->bind_result($email);

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

    return false;
于 2013-03-31T13:28:10.207 に答える