首页  >  文章  >  后端开发  >  如何解决准备语句中绑定参数编号不匹配的问题?

如何解决准备语句中绑定参数编号不匹配的问题?

Patricia Arquette
Patricia Arquette原创
2024-10-22 11:02:29807浏览

How to Resolve Binding Parameter Number Mismatch in Prepared Statements?

“bind_param 变量数量与准备好的语句中的参数数量不匹配”

在您提供的代码片段中,您遇到的警告源于之间的不匹配bind_param() 方法中的变量数量和准备好的语句中的参数数量。要解决此问题,确保这两个数字对齐至关重要。

您最初使用的准备好的语句:

$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types 
    WHERE year = ? AND make = '?' ORDER by model");

包含错误。 make 参数的占位符错误地用引号 ('?') 括起来。在准备好的语句中,占位符应该用不带引号的问号表示。

更正后的准备好的语句:

$stmt = $mysqli->prepare("
    SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model
");

现在有两个占位符,与 bind_param() 方法中的两个变量匹配:

$stmt->bind_param('is', $year, $make);

通过消除 make 占位符周围的不正确引号,您可以对齐变量和参数的数量,解决不匹配错误。

以上是如何解决准备语句中绑定参数编号不匹配的问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn