PHP mysqli_stmt :: bind_param变量数不匹配

时间:2015-06-19 07:02:35

标签: php mysqli

虽然将变量绑定到我准备好的语句,但PHP报告参数的数量不匹配!

这是代码:

private $q_setQueue = "update rivr_queues set name='?', description='?' where QueueID='?';";
.
.
.
$stmt = $astdb->prepare($this->q_setQueue);
$stmt->bind_param('sss',$qName,$qDesc,$qID);

参数数量为3,所以我认为代码是正确的。

2 个答案:

答案 0 :(得分:2)

您获得的错误意味着您传递给bind_param功能的变量数量与您准备好的查询中占位符的数量不匹配。

虽然你有3个变量和3个"问号" (继续阅读为什么我使用了这个术语而不是#34;占位符")在准备好的查询中 - 注意当你将假设包装成带有单引号('')的占位符时将被视为真实价值而不是占位符。

所以基本上,你有0个占位符和3个变量 - >不配。 删除单引号并更新查询:

private $q_setQueue = "update rivr_queues set name=?, description=? where QueueID=?;";

应该解决你的问题。

答案 1 :(得分:0)

$stmt->bind_param(1,$qName);
$stmt->bind_param(2,$qDesc);
$stmt->bind_param(3,$qID);

并在每个问号?

上省略单引号