如何从类中的预准备语句中获取数组

时间:2017-08-21 18:59:15

标签: php mysql sql arrays

我写了这段代码:

public function getDataAsArray($myQuery){
        $this->connection = mysqli_connect($this->host, $this->dbUsername, $this->dbPassword, 'portal');
        $statement = $this->connection->prepare($myQuery);

        $statement->execute();

        $data = $statement->get_result()->fetch_array();

        $results = array();

        while($line = $data){
            $results[] = $line;
        }
        return $results;
    }

我正在尝试将数据库中的结果作为数组返回,因此我可以在foreach循环中使用它。这在耗尽的内存分配器之前不起作用。

我有这个工作(不安全)的代码:

public function getDataAsArray($myQuery){
        $this->connection = mysqli_connect($this->host, $this->dbUsername, $this->dbPassword, 'portal');

        $query = mysqli_query($this->connection, $myQuery);
        $results = array();
        while($line = mysqli_fetch_array($query)){
            $results[] = $line;
        }
        return $results;
    } 

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

替换:

while($line = $data){

使用:

$result = $statement->get_result();
while($line = $result->fetch_array()) {

在您的第一个场景中,$data是变量,而不是函数调用。 $line = $data将始终指向您获取的第一行,然后运行" forever"直到分配所有可用内存。