mysqli:没有mysqlnd的get_result功能和准备好的语句

时间:2014-08-15 08:45:04

标签: php mysqli

如标题中所述,我无法在我的主机上安装mysqlnd,但我想继续使用预准备语句。为了便于编码,在我的开发机器上,我使用了这种方法:

    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();

    return $q -> get_result();
}

如果没有get_result,我将如何返回相同或类似的结果集?

1 个答案:

答案 0 :(得分:1)

我最终重写了项目并使用了PDO