PHP中通过调用call_user_func_array函数执行mysqli_stmt_bind_param方法时需要注意的问题
2014-01-06 13:35
796 查看
当PHP版本高于5.3以后,在向mysqli_stmt_bind_param函数传递参数时需要通过引用传递。因此,如下代码会报错:
此时服务端会提示类似:Parameter 3 to mysqli_stmt bind_param() expected to be a reference 的错误。
正确的做法应该将传递给 mysqli_stmt bind_param() 方法的数组转换为通过引用传递即可:
此时即可顺利执行。
$query = "INSERT INTO test (id,row1,row2,row3) VALUES (?,?,?,?)"; $params = array(1,"2","3","4"); $param_type = "isss"; $sql_stmt = mysqli_prepare ($mysqli, $query); call_user_func_array('mysqli_stmt_bind_param', array_merge(array($sql_stmt, $param_type), $params)); mysqli_stmt_execute($sql_stmt);
此时服务端会提示类似:Parameter 3 to mysqli_stmt bind_param() expected to be a reference 的错误。
正确的做法应该将传递给 mysqli_stmt bind_param() 方法的数组转换为通过引用传递即可:
call_user_func_array(array($stmt, 'bind_param'), refValues($params)); function refValues($arr){ if (strnatcmp(phpversion(),'5.3') >= 0) //Reference is required for PHP 5.3+ { $refs = array(); foreach($arr as $key => $value) $refs[$key] = &$arr[$key]; return $refs; } return $arr; }
此时即可顺利执行。
相关文章推荐
- php中怎么使用call_user_func动态调用方法
- php中调用用户自定义函数的方法:call_user_func,call_user_func_array
- 通过函数名 和 数组调用 php 函数 call_user_func_array
- A框架 第二部 实例化接收到的get类,调用父类抽象方法,自动执行方法call_user_func_array()
- 【PHP小错误整理】在类面调用自定义方法需要注意的问题
- 浅谈PHP命令执行php文件需要注意的问题
- Java中通过反射调用其他类中的main方法时要注意的问题
- Java中通过反射调用其他类中的main方法时要注意的问题
- PHP call_user_func与call_user_func_array函数的用法
- 利用反射调用方法时,处理ref,out参数需要注意的问题
- php方法调用注意问题
- PHP call_user_func的一些用法和注意点
- php:php:call_user_func()--调用用户定义的回调函数
- 利用反射调用方法时,处理ref,out参数需要注意的问题(转)
- PHP 中__Call()和call_user_func_array()方法的使用方法
- PHP命令执行php文件需要注意的问题
- call_user_func函数和call_user_func_array函数(PHP)
- mysqli::stmt报Fatal error: Call to a member function bind_param() on a non-object in ...
- js 通过调用方法终止js代码继续执行的问题(采用throw解决)
- PHP通过反射方法调用执行类中的私有方法