类内回调问题

时间:2014-08-07 17:54:42

标签: php

我正在尝试将任意数量的参数绑定到准备好的语句中,而我似乎无法让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;
}

1 个答案:

答案 0 :(得分:0)

第一个参数应该是一个对象,而不是对象的引用,所以没有&

 call_user_func_array( array( $q,  "bind_param" ) , array_merge( array( $types ), refValues( $params ) ) );