我正在尝试将任意数量的参数绑定到准备好的语句中,而我似乎无法让call_user_func_array()
在我的生活中工作。
代码,我遇到问题:
$q = $this -> dbc -> prepare( $query );
if ( $params ){
call_user_func_array( array( &$q, "bind_param" ) , array_merge( array( $types ), refValues( $params ) ) );
}
我得到这样的错误:
警告:call_user_func_array()期望参数1有效 回调,第一个数组成员不是有效的类名或对象 C:\ BitNami \ wampstack-5.4.21-0 \ Apache2的\ htdocs中\项目\ php_lib \ cls_Main.php 第38行
编辑:感谢回答。
最终方法:
public function qry( $query, $params = null ){
if ( is_array( $params ) ){
if ( substr_count( $query, "?") != count($params) ){
error("Parameters amount does not match query!");
}
$types = "";
foreach( $params as $parameter ) {
$t = substr( gettype( $parameter ), 0, 1 );
if ( in_array( $t , array( "i", "s", "d" ) ) ){
$types .= $t;
} else {
error( "Invalid parameter type: $t !" );
}
}
}
$q = $this -> dbc -> prepare( $query );
if ( $q === false ){
error( "Error in SQL statement: " . $this -> dbc -> error );
}
if ( $params ){
call_user_func_array( array( $q, "bind_param" ) , array_merge( array( $types ), refValues( $params ) ) );
}
$q -> execute();
$result = $q -> get_result();
return $result;
}
答案 0 :(得分:0)
第一个参数应该是一个对象,而不是对象的引用,所以没有&
:
call_user_func_array( array( $q, "bind_param" ) , array_merge( array( $types ), refValues( $params ) ) );