我开始使用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的大部分其他问题。有时候人们在数组中有额外的参数,有时候是拼写错误,有些语法错误不会产生错误,但仍会影响参数的数量。在这种情况下,一切似乎都很完美。
答案 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();