【问题标题】:PDO foreach loop over bindParam with a reference return wrong result带有引用的 PDO foreach 循环在 bindParam 上返回错误结果
【发布时间】:2015-12-27 13:28:29
【问题描述】:

我想我已经阅读了很多关于该问题的主题,但仍然得到错误的结果。 我有一个查询参数数组,我想用foreach() 循环来绑定参数。

foreach($aQueryParams as $key => &$value){
    $stmt->bindParam($key, $value);
}

这涉及INSERT 查询,结果我得到的是插入表中的键而不是值。但我确信钥匙和价值都很好,而且在好地方。在$key$value 上的var_dump()$key&$value 提供:firstNameSamy。但这是插入到我的表中的:firstName...

我还尝试使用 bindValue 而不使用引用,结果相同。

为了更清楚,我给你 gitHub 存储库的链接。您可以在第 44 行的 ClientManager.class.php 中看到参数数组的声明,以及在第 97 行的 DBOperation.class.php 中绑定参数的 foreach() 循环。 https://github.com/code-climber/car_rental/blob/preparedStmt/src/car_rental/model/dao/ClientManager.class.php

我要疯了。

【问题讨论】:

  • 由于我看不到您的其余代码,我假设它与此重复:stackoverflow.com/questions/3307409/…。如果没有,您究竟想通过参考来完成什么?
  • 为什么不直接将参数与execute()中的数组绑定呢?我个人觉得这不那么麻烦。
  • 迈克,我不认为这是重复的,因为我只有一个 foreach() 循环。我想要完成的事情很简单。我的参数数组就像':login'=>'Samy',我想在我的表中插入值'Samy',但现在,这是插入的键':login'。 Rasclatt,你能举个例子吗,因为现在,我总是看到人们在 execute() 之外绑定参数。我使用指向此代码的 gitHub 链接编辑我的帖子。

标签: php loops pdo pass-by-reference bindparam


【解决方案1】:

好的,我终于找到了问题所在。这是我的 SQL 查询。我在每个 VALUES 参数周围加上了一些引号。 因为我没有错误消息,所以我只关注对我来说新的东西,bindParam() 上的循环。

我发现版主对我的问题的清晰度有点严厉,因为我真的阅读了所有我能读到的参考资料……它不是重复的。错误在其他地方。

【讨论】:

    猜你喜欢
    • 2015-03-14
    • 2018-11-12
    • 2015-07-23
    • 2017-03-10
    • 2013-03-29
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多