PDO没有约束占位符

时间:2013-12-10 14:15:20

标签: php mysql pdo prepared-statement

我正在尝试将我的登录脚本从 mysql 更改为 PDO 。 对于我的其余部分,所有接缝都要远离这些部分,我只是不明白为什么。

我有以下代码

...
$pasword=md5($_POST['password']);
$email=$_POST['email'];

....

$query ="SELECT id FROM guests WHERE email=':eml' AND password =':pwd' AND lead_guest=17";
// $param2=array(':eml'=>$email,':pwd'=>$pasword);
$state=$dbh->prepare($query);
$state->bindParam(':eml',$email);
$state->bindParam(':pwd',$pasword);
$state->execute();

在它的当前状态下它会返回0的行数(它不应该),我也试过了

  //$state->bindParam(':eml',$email);
  //$state->bindParam(':pwd',$pasword);
  $state->execute($param2);

也会返回0的行数。

变量$email$pasword在我echo出来时是正确的,并且脚本使用mysql_函数完美运行。

$dbh变量在标题中创建,$query ="select id where 1"变量按预期工作。

我确信(虽然可能是错的)我将问题缩小到脚本的state->bindParam()部分。我完全失去了为什么这部分剧本没有任何建议热烈欢迎。

2 个答案:

答案 0 :(得分:9)

删除单引号 '

SELECT id FROM guests WHERE email=:eml AND password =:pwd

答案 1 :(得分:2)

您的查询将是

$query ="SELECT id FROM guests WHERE email=:eml AND password =:pwd AND lead_guest=17";

:eml:pwd周围没有单引号。