不匹配的绑定变量之谜
问题围绕着为大量 MySQL 准备语句绑定参数时遇到的错误。问题在于bind_param方法中“s”类型指示符的数量与查询字符串中问号(?)的数量不匹配。
理解bind_param()
bind_param() 是一种 mysqli 方法,它用实际数据替换准备好的查询中的问号 (?)。类型定义字符串中的每个字符(例如“s”代表字符串)对应一个问号和要绑定的数据。
匹配绑定变量的数量
要记住的关键点是类型定义字符串中的字符数(例如“s,s,s”)必须与问号的数量精确匹配(?) 在查询字符串中。例如,带有 3 个问号的查询需要带有 3 个“s”字符的类型定义字符串。
检查代码
在给定的 PHP 代码中,查询字符串包含65个问号,但是bind_param()方法使用了“s,s,s,s,s,s,s,s”(总共只有8个“s” 人物)。这种差异会导致错误消息:“类型定义字符串中的元素数量与绑定变量的数量不匹配。”
要解决问题:
要要纠正该问题,请验证 bind_param() 方法中“s”字符的数量是否与查询字符串中问号 (?) 的数量匹配。在这种情况下,bind_param() 方法应替换为:
$stmt->bind_param("sssssssssssssssssssssssssssssssssssssssssssssssssssssssssss", ...);
附加说明:
以上是为什么我的 MySQL 准备语句失败并出现'类型定义字符串中的元素数量与绑定变量的数量不匹配”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!