2016-05-15 24 views
0

エラーが発生しました。
キャッチされないPDOException:SQLSTATE [21000]:カーディナリティ違反:1241オペランドは、1列(複数可)未知PDOException:SQLSTATE [21000]:カーディナリティ違反:1241オペランドに1列が含まれている必要があります

if ($_POST['submit'] ?? '' == "Log In") { 

    $query = "SELECT * FROM member WHERE (email, password) LIKE (:email, :password)"; 

    $stmt = $link -> prepare($query); 
    $stmt -> bindValue(':email', $_POST['loginemail'], PDO::PARAM_STR); 
    $stmt -> bindValue(':password', md5(md5($_POST['loginemail']).$_POST['loginpassword']), PDO::PARAM_STR); 
    $stmt -> execute(); 
    $rows = $stmt -> fetchAll(); 

} 

が含まれている必要がありますが、エラーはこの文ではありません。

$sql = "SELECT ko_name FROM dogBREEDS WHERE dogBREEDS.ko_name LIKE (:keyword) ORDER BY id ASC LIMIT 0, 10"; 
$query = $pdo->prepare($sql); 
$query->bindParam(':keyword', $keyword, PDO::PARAM_STR); 
$query->execute(); 
$list = $query->fetchAll(); 

どうすればこの問題を解決できますか?何が違うの?

答えて

0

$query = "SELECT * FROM member WHERE (email, password) LIKE (:email, :password)";

このSQLは正しい構文で右SQLではありません。私はちょうどこのように変更

$query = "SELECT * FROM member WHERE email LIKE (:email) and password LIKE (:password)"; 
0

); LIKE(またはここでMySQL LIKE Clauseのを見て)がこのように使用することはできません、これをしてくださいしてみてください。

$query = "SELECT ID FROM member WHERE email=:email AND password=:password"; 

$stmt = $link -> prepare($query); 
$stmt -> bindParam(':email', $_POST['loginemail'], PDO::PARAM_STR); 
$stmt -> bindValue(':password', md5(md5($_POST['loginemail']).$_POST['loginpassword']), PDO::PARAM_STR); 
$stmt -> execute(); 
関連する問題