绑定参数错误:数字不匹配
在 MySQLi 准备好的语句中,类型字符(例如,字符串中的“s”)的数量bind_param 方法必须与 SQL 中的占位符数量(例如“?”)匹配
问题摘要
您收到错误,因为代码中的 bind_param 调用与准备好的语句中的占位符数量不匹配:
$stmt->bind_param("s,s,s,s,s,s,s,...", $project_name, $status, ...);
这可能是由于表单输入的数量 (65) 与占位符的数量不匹配
正确格式
bind_param 的正确格式如下:
$stmt->bind_param("type_characters", $variable1, $variable2, ...);
其中“type_characters”是包含一个字符的字符串查询中的每个占位符,指示数据的类型
计算类型字符
为避免不匹配,建议手动或使用正则表达式计算占位符的数量。在您的情况下,您应该确认准备好的语句包含 65 个占位符。
示例
对于具有 65 个占位符的修改后的准备好的语句,正确的 bind_param 调用将是be:
$stmt->bind_param("sssssssssssssssssssssssssssssssssssssssssssssssssssssssss", $project_name, $status, ...);
提示
为了帮助确保正确绑定,请考虑使用以下方法来计算 SQL 查询中占位符的数量:
function countPlaceholders($sql) { return substr_count($sql, '?'); }
以上是MySQLi 绑定参数错误:为什么我的类型字符数与占位符不匹配?的详细内容。更多信息请关注PHP中文网其他相关文章!