预处理语句中参数数量与bind_param绑定的变量数量不一致
P粉578343994
P粉578343994 2023-08-22 23:51:55
[PHP讨论组]

这是我的代码片段:

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

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

$stmt->execute();

当我输出$year和$make的值时,我能看到这些值,但是当我运行这个脚本时,我得到一个空值,并且我的日志文件中出现以下警告:

PHP Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement

在这种情况下,year在数据库中的类型是int(10),我已经尝试将其转换为int类型进行传递,而make是一个带有utf8_unicode_ci编码的varchar(20)。我有什么遗漏吗?

P粉578343994
P粉578343994

全部回复(1)
P粉513316221

您的预处理语句是错误的,应该是:

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

当您准备一个语句时,您必须用问号而不是引号替换每个变量。在引号内的问号将不会被识别为占位符。

问号的数量必须等于bind_param()中的变量数量

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号