call_user_func_array() - 警告:mysqli_stmt :: bind_param():变量数量与预准备语句中的参数数量不匹配

时间:2016-06-07 22:53:18

标签: php mysql function mysqli prepared-statement

我正在尝试使用数组动态绑定参数。这是我的代码的一部分,这很重要,还显示调试信息:

$params = array_merge( array( $one ), array_values( $two ) );
echo '<pre>';
echo $query . '<br><br>';
print_r( $params );
call_user_func_array( array( &$stmt, 'bind_param' ), MakeValuesReferenced( $params ) );

这是调试信息:

enter image description here

正如您所看到的,我的查询中有三个问号,并且三个参数已添加到bind_param中。我认为这应该有效。我做错了什么?

1 个答案:

答案 0 :(得分:1)

您不能引用占位符,它使其成为字面值而不是占位符。将时间移到绑定中并将占位符保留在自己的位置。

e.g。

where thedateandtime between ? and ?

然后在绑定

($date . ' 00:00:00')

您也无法绑定列,因此应更改order by。在将值传递给查询之前,请使用白名单来比较值。