2016-10-16 4 views
-3

このコードでエラーが発生しました。私はUserNameとPasswordを設定しましたが、エラーが発生します。私の失敗は何ですか?準備中のPDO設定値

$Id=$db->prepare("select UserID from Users where 1=1 and IsActive=1 and Name=:UserName and Password=:Password"); 
$Id->bindParam(":UserName",$UserName,PDO::PARAM_STR); 
$Id->bindParam(":Password",$Password,PDO::PARAM_STR); 
$Id->execute(); 

これは誤りである:正直なところ

PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens

+0

'$ UserName'と' $ Password'が両方とも設定されていますか?もしそうであれば、私はそれがそのエラーを引き起こす理由は何も見ません。ドキュメントの[最初の例](http://php.net/manual/en/pdostatement.bindparam.php#refsect1-pdostatement.bindparam-examples)は、同じことを行う必要があります。 – Mikey

+0

はい私は値を設定する –

答えて

0

以下に示すように、私はあなたが単にexecute`機能に連想配列を渡すことができるので、bindParamまたはbindValueを使用するために何らかの理由があったことがありません:

$Id = $db->prepare("select UserID from Users where 1=1 and IsActive=1 and Name=:UserName and Password=:Password"); 
$Id->execute(array(":UserName" => $UserName, ":Password" => $Password)); 
+1

興味深いが、これは実際にOPのコードが失敗した理由を説明していない。 – IMSoP

+0

それは動作しません –