php - PDO 不绑定(bind)占位符

标签 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 变量是在 header 中创建的,并且带有 $query ="select id where 1" 它按预期工作。

我确信(尽管可能是错误的)我已将问题缩小到脚本的 state->bindParam() 部分。我完全不知道为什么这部分脚本没有工作 热烈欢迎任何建议。

最佳答案

删除单引号 ' :

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

关于php - PDO 不绑定(bind)占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20496805/

相关文章:

php - 选择框中的选项没有响应

php - Zend Framework - 使用路由和正则表达式设置用户友好的 URL

linux - pdo 驱动程序在 linux 中没有显示任何值

php - Zend 应用程序未安装 MySql 驱动程序错误

php - 如何按列获取不同的行?

mysql - 更改 PDO 中的 SQL Server 列

javascript - <script> 标签显示在 ajax 响应中并执行?

php - 多字段级联mysql

mysql - 如何在现有行的另一列中添加具有默认值的MySQL表列

mysql - Rails 加入最大条件