【问题标题】:Mysqli Prepared Statements ErrorMysqli 准备好的语句错误
【发布时间】:2014-06-11 00:18:27
【问题描述】:

我对第一次使用 mysqli 动态参数绑定有点困惑。 我的查询是

 UPDATE tb_hotel SET hotel_name = ?, hotel_overview = ?, hotel_active = ?,
 hotel_location_description = ?, hotel_location_gmap = ?, hotel_cm_mapping_id = ?
 WHERE hotel_id = ?

当我转储传递给 call_user_func_array 的数组时,

  array (size=8)
  0 => string 'ssisssi' (length=7)
  1 => &string 'sdfsfdsf' (length=8)
  2 => &string 'sdfdsf' (length=6)
  3 => &int 0
  4 => &string 'dsfdsfds' (length=8)
  5 => &string 'fsdfsdf' (length=7)
  6 => &string 'fsdfdsfsdf' (length=10)
  7 => &int 17

然后我将它们传递给 call_user_func_array,如下所示。

call_user_func_array(array($stmt, 'bind_param'), $param_array_bind);

我收到错误“警告:mysqli_stmt::bind_param():类型定义字符串中的元素数量与绑定变量的数量不匹配”

谁能帮我解释一下。

【问题讨论】:

  • 我看到你有 7 个 ? 并且你的数组大小为 8...用你的查询检查数据我认为这个数组条目应该被删除 2 => &string 'sdfdsf' (length=6)
  • 是的,但第一个参数是类型列表。我必须在第一个参数中将类型列表传递给 call_user_func_array。我编辑了代码。
  • 亲爱的 CodeBird 我已将它们发送到 call_user_func_array。在那种情况下,我必须将类型列表作为第一个元素传递(据我所知)
  • 看看这个,它应该对你有帮助:stackoverflow.com/questions/8101071/…你还没有发布你所有的代码,所以不明白你在说什么
  • 谢谢,我对建议做了一些修改。但仍然遇到其他一些错误。最后我发现我的 DB TRIGGER 也有错误。感谢您的帮助。

标签: php mysqli prepared-statement


【解决方案1】:

您在 MySQL 代码中放置了 7 个字段,而您的数组有 8 个元素。这就是问题。

【讨论】:

  • 你不知道 mysqli 准备好的语句是如何工作的。这就是问题所在。
猜你喜欢
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多