2016-08-16 2 views
-2

Ich erhalte diese Fehlermeldung:PHP while-Schleife Speicherfehler

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate > 32 bytes) in path/to/1phpquery.php on > line 24

Linie 24 ist

while ($r = $mysqli->query($query)) {

Der vollständige Code ist:

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

$instr = "CCBOT"; 
require("dbconnect.php"); 

$query = 'SELECT LgSpecNet, SmSpecNet, CommNet FROM cot WHERE Ticker = "$instr" LIMIT 5'; 

if ($result = $mysqli->query($query)) { 

$table = array(); 

$table['cols'] = array(
array('label' => 'Large Spec Net', 'type' => 'number'), 
array('label' => 'Small Spec Net', 'type' => 'number'), 
array('label' => 'Commercial Net', 'type' => 'number') 
); 

$rows = array(); 

while ($r = $mysqli->query($query)) { 
$temp = array(); 

$ra = $r->fetch_assoc();  

$temp[] = array('v' => (int) $ra['LgSpecNet']); 
$temp[] = array('v' => (int) $ra['SmSpecNet']); 
$temp[] = array('v' => (int) $ra['CommNet']); 

$rows[] = array('c' => $temp); 
} 

$result->free(); 

$table['rows'] = $rows; 

$jsonTable = json_encode($table); 

echo $jsonTable; 

} 

$mysqli->close(); 

?> 
+1

Reduzieren Sie die Menge an Daten, die Sie holen, oder erhöhen die PHP-Speicherlimit ... Gibt es Gründe, die Sie haben baue dieses intermediate Array sowieso? kannst du nicht einfach '$ rows [] = $ r'? –

+0

Normalerweise holen Sie das Ergebnis in der while (...-> fetch()), Sie wiederholen die "Abfrage" nicht immer und immer wieder. – progysm

+0

Danke. Mark B, es fragt nur nach 5 Zeilen. –

Antwort

1

Sie sind re- endlos Ausführen Ihrer Abfrage Ändern

while ($r = $mysqli->query($query)) 

Um

while ($ra = $result->fetch_assoc()) 

und entfernen Sie die Zeile:

$ra = $r->fetch_assoc(); 
+0

Vielen Dank, das hat das Problem gelöst. Ich werde es als die Antwort markieren. Der JSON gibt zurück: {"cols": [{"label": "Großes Spec-Net", "type": "Nummer"}, {"label": "Kleines Spec-Net", "type": "number"} , {"label": "Kommerzielles Netz", "Typ": "Nummer"}], "Zeilen": []} ... die Zeilen sind leer. Ich habe die Abfrage zuvor getestet und es gibt 5 Zeilen zurück. Irgendwelche Ideen? –

+0

Es gibt keine Zeilen zurück, also werde ich das herausfinden. Danke noch einmal. Ich vermied es, drei Tage lang eine Frage zu stellen, da sie alle irgendwo online beantwortet werden. Das war eine große Hilfe. –