动态地向mysql添加变量:bind_param

时间:2015-09-22 00:07:50

标签: php dynamic mysqli

我想动态地将变量添加到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中的绑定变量数不匹配

1 个答案:

答案 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