当前位置: 首页 > 面试题库 >

PDO错误:SQLSTATE [HY000]:一般错误:2031

易烨磊
2023-03-14
问题内容

我收到了这个令人讨厌的错误,尽管我知道为什么要得到它,但我终生无法找到解决方案。

if ($limit) {
   $sth->bindValue(':page', $page - 1, PDO::PARAM_INT);
   $sth->bindValue(':entries_per_page', $page * $entries_per_page, PDO::PARAM_INT);
}

$sth->execute($criteria);

查询包含占位符(:placeholder)。但是要添加这些LIMIT占位符,我需要使用手动方法(bindValue),因为否则引擎会将它们转换为字符串

我没有收到无效的参数数量错误,因此所有占位符均已正确绑定(我认为)。

查询:

SELECT `articles`.*, `regional_municipalities`.`name` AS `regional_municipality_name`, 
       `_atc_codes`.`code` AS `atc_code`, `_atc_codes`.`name` AS `substance`
FROM `articles`
LEFT JOIN `_atc_codes`
ON (`_atc_codes`.`id` = `articles`.`atc_code`)
JOIN `regional_municipalities`
ON (`regional_municipalities`.`id` = `articles`.`regional_municipality`)
WHERE TRUE AND `articles`.`strength` = :strength
GROUP BY `articles`.`id`
ORDER BY `articles`.`id`
LIMIT :page, :entries_per_page

除最后两个LIMIT(我与之手动绑定)外,所有占位符值均位于$ criteria中bindValue()


问题答案:

您不能使用->bind*
->execute($params)。使用或;如果您将参数传递给execute(),这些将使PDO忘记已经通过绑定的参数->bind*



 类似资料:
  • 我正在使用laravel auth。在注册页面中,用户需要填写姓名、电子邮件和密码才能创建帐户。稍后,用户可以编辑他的个人资料帐户,并插入更多信息,如地址、城市、邮政编码等,但创建帐户只需要它的名字、姓氏、电子邮件和密码。 我使用laravel auth使用下面的代码构建上面的逻辑,但是我在填写表单并单击“创建帐户”后收到错误: SQLSTATE[HY000]:一般错误:1364字段“facebo

  • 问题内容: 这个问题已经在这里有了答案 : PDO错误:“ SQLSTATE [HY000]:常规错误”更新数据库时 (2个答案) 2年前关闭。 我收到此错误: ..每当我使用PDO执行此代码时: 我不知道为什么会这样。我已经检查了查询,但根本找不到任何错误。 问题答案: 这是发生了什么: 您正在尝试获取UPDATE查询。您不能这样做,因为UPDATE查询不会返回值。如果您想知道该查询影响了多少行

  • 问题内容: 使用PDO更新数据库时出现错误。我是PDO的新手,所以问题可能很小,我只是不明白。 关于错误的有趣的是,该命令可以正常运行,并且数据库确实得到了更新。 但是它仍然向我返回错误。 码: 错误: 错误更新内容:SQLSTATE [HY000]:一般错误 我真的不知道问题可能在哪里,因为它非常怪诞,而且我无法找到遇到相同问题的任何人。 问题答案: 您不使用fetchAll(),如 与更新或插

  • 我正在尝试使用artisan创建外键,但出现了此错误。 这是我的迁移: 在批次表中,我使用作为it模型批次。我补充说: 知道如何解决这个错误吗?

  • 我正在尝试使用Laravel 5.8为“users”表创建外键。 Laravel 5.8自动生成的迁移表如下, 然后从我的“存储库”表中,我引用了“用户”表,如下所示, 但我在这段代码上遇到了“一般错误:1215无法添加外键约束”错误。有许多与此问题相关的解决方案。 一般错误:1215无法在laravel中添加外键约束 迁移:无法在laravel中添加外键约束 MySQL数据库发生Laravel迁

  • 试图分配外键,但当你运行迁移,我得到这个这个错误,我不明白是什么问题。 SQLSTATE[HY000]:一般错误:1215无法添加外键约束(SQL:alter table