我想动态地将变量添加到mysqli:bind_param ...
我看了很多教程和示例,但是我制作的代码现在还没有工作几个小时。
$params = array('');
$params[0] = $variableType; //variableType contains e.g. sssi
foreach ( $data as $key => $value ) {
array_push($params, $data[$key]); // I also tried $params[] = $value;
}
call_user_func_array(array($stmt, 'bind_param'), $this->refValues($params));
refValues函数看起来像这样......
private function refValues(Array &$arr)
{
$refs = array();
foreach($arr as $key => $value)
$refs[$key] = &$arr[$key];
return $refs;
}
每次尝试时都会出现错误...
警告:mysqli_stmt :: bind_param():类型定义字符串中的元素数与第54行的C:\ Users ... xxx.php中的绑定变量数不匹配
答案 0 :(得分:-1)
这里的问题是你错过了mysqli_stmt :: bind_param的第一个参数,来自:http://php.net/manual/en/mysqli-stmt.bind-param.php
bool mysqli_stmt :: bind_param(string $ types,mixed& $ var1 [,mixed& $ ...])
所以你需要组装$ types字符串并将其作为第一个参数传递。
修改 我建议不要试图强制mysqli做一些不设计的东西,你应该使用PDO,它只需要在execute方法中获取一系列参数:http://php.net/pdostatement-execute