我写了这段代码:
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;
}
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
替换:
while($line = $data){
使用:
$result = $statement->get_result();
while($line = $result->fetch_array()) {
在您的第一个场景中,$data
是变量,而不是函数调用。 $line = $data
将始终指向您获取的第一行,然后运行" forever"直到分配所有可用内存。