2017-01-04 4 views
-1

このコードの何かが正しく動作しません。だからあなたの助けが必要です。PHP関数に問題があるようです。

私は外部ファイル内の関数を書かれている:

function userExists($conn, $user){ 
    $sql = "SELECT COUNT(*) FROM user WHERE email = :email"; 
    $stmt = $conn->prepare($sql); 
    $stmt->bindParam(':email', $user); 
    $stmt->execute(); 
    $results = $stmt->fetch(PDO::FETCH_ASSOC); 
    if(count($results) > 0): 
     return true; 
    else: 
     return false; 
    endif; 
} 

、私はここに、この関数を呼び出す:

if(!empty($_POST['email']) && !empty($_POST['password'])): 
    $email = $_POST['email']; 
    $password = $_POST['password']; 

    $records = $conn->prepare('SELECT id,username,email,password,active FROM user WHERE email = :email'); 
    $records->bindParam(':email', $_POST['email']); 
    $records->execute(); 
    $results = $records->fetch(PDO::FETCH_ASSOC); 
    if(userExists($conn, $email) === false){ 
     echo 'False'; 
    }else{ 
     echo 'True'; 
    } 
endif; 

しかし、出力は毎回真..です多分私が見ることができません木の木。結果は値を含んでいますので、あなたのクエリは値0を返しているので

+4

'$ results'はオブジェクトです。 'count'は常にgt0です。' [] '表記を使用してカウント値を取得します。 –

+0

count(results ['email'])> 0のようなものを使うべきですか? – Reebal

+0

'print_r($ results)'を使用して、何が使えるかを見てください。 –

答えて

1

結果が常に0より大きくなります

Thxを。むしろこれを行う

"SELECT COUNT(*) AS Total FROM user WHERE email = :email";" 
if($result['Total'] > 0) 
{.....} 
+0

'Total'キーで、' total'ではありません –

+0

私の悪いキーは合計ではありません... –