PDOStatement执行SQLSTATE无效参数号

时间:2014-02-28 23:17:13

标签: php mysql sql pdo

我开始使用PDO在PHP / MySQL中支持多个数据库,但由于某种原因,一个查询不断产生错误消息:

$account_email = 'test@test.com';

$statement = $pdo->prepare("SELECT id FROM account WHERE account_email = :email");
$statement->execute( array(':email' => $account_email ));

警告:PDOStatement :: execute():SQLSTATE [HY093]:参数号无效:绑定变量数与令牌数不匹配

为了兴趣,我尝试了其他方法来实现它并且它抛出了同样的错误:

$statement = $pdo->prepare("SELECT id FROM account WHERE account_email = ?");
$statement->execute( array( $account_email ));

我做了很多研究,显然PDO对格式很挑剔。 PDO对此查询有什么不满意吗?间隔?

仅供参考:我已经阅读了StackOverflow的大部分其他问题。有时候人们在数组中有额外的参数,有时候是拼写错误,有些语法错误不会产生错误,但仍会影响参数的数量。在这种情况下,一切似乎都很完美。

1 个答案:

答案 0 :(得分:1)

您不必传入数组,特别是只有一个参数,请尝试:

$account_email = 'test@test.com';

$statement = $pdo->prepare("SELECT id FROM account WHERE account_email = :email");
$statement->bindParam(':email', $account_email);
$statement->execute();