MySQL的get_result替代PHP< 5.3

时间:2014-10-24 17:52:45

标签: php mysql mysqli

我正在为大学项目创建一个PHP / MySQLi类,并且他们正在使用PHP 5.2.6版。我需要我的类使用预准备语句执行查询并给出一组结果,所有这些都适用于PHP> 5.3但是在5.2.6我的get_result导致致命错误。还有其他选择吗?

我查看bind_result虽然声明中可能有任意数量的字段,这意味着我无法使用此功能。

public function select($query, $data = NULL) {
    $db = $this->connect();
    $stmt = $db->prepare($query);
    if(!is_null($data)) {
        call_user_func_array(array($stmt, 'bind_param'), $this->query_params($data));
    }
    $stmt->execute();       
    $sqlResult = $stmt->get_result(); //fatal error on PHP < 5.3
    $results = array();
    while($row = $sqlResult->fetch_assoc()) {
        $results[] = $row;
    }
    return $results;
}

2 个答案:

答案 0 :(得分:0)

你可以使用bindvalues(),如

public function query($sql,$params = array()){
        $this->_error = false;
        if($this->_query = $this->_pdo->prepare($sql)){
            $x = 1;
            if(count($params)){
                foreach($params as $param){
                    $this->_query->bindValue($x, $param);
                    $x++;
                }
            }

            if($this->_query->execute()){
                $this->_results = $this->_query->fetchAll(PDO::FETCH_OBJ);
                $this->_count = $this->_query->rowCount();
            }else {
                $this->_error = $this->_query->errorInfo();
            }
        }
        return $this;
    }    

答案 1 :(得分:-1)

可能重复:Call to undefined method mysqli_stmt::get_result

根据帖子:

请阅读此方法的用户说明:

http://php.net/manual/en/mysqli-stmt.get-result.php

它需要mysqlnd驱动程序......如果它没有安装在你的网站空间上,你将不得不使用BIND_RESULT&amp; FETCH!

http://www.php.net/manual/en/mysqli-stmt.bind-result.php

http://www.php.net/manual/en/mysqli-stmt.fetch.php