2017-06-14 36 views
-1

我想從我的數據庫中獲取一些數據從當前有429,000條記錄的特定表中。致命錯誤允許在MySQL查詢上耗盡的134217728字節的內存大小在表

我想總了「量」列,但在運行此查詢是給我的錯誤:

致命錯誤:用盡134217728個字節允許內存大小(試圖分配32個字節)

這裏是我的查詢

$stmt = $db->prepare("SELECT amount FROM salesOrderTransaction WHERE recordStatus=:recordStatus AND paymentStatus=:paymentStatus"); 
$stmt->bindValue(':recordStatus', '1', PDO::PARAM_STR); 
$stmt->bindValue(':paymentStatus', 'Future', PDO::PARAM_STR); 
$stmt->execute(); 

$results = $stmt->fetchAll(PDO::FETCH_ASSOC); 

$total = 0; 

foreach ($results as $row) { 
    $total = $total + $row['amount']; 
} 

$response['totalTransactionsOwed'] = $total; 
+0

[致命錯誤的可能重複:134217728個字節用盡允許的內存大小(笨+ XML-RPC)](https://stackoverflow.com/a/18660082/6521116) –

+1

爲什麼不使用類似'SELECT SUM(amount)FROM ...'的東西? – CD001

+0

我爲什麼被拒絕投票? –

回答

3

,你可以在短短的一行獲得的價值:

$stmt = $db->prepare("SELECT sum(amount) as totalAmount FROM salesOrderTransaction WHERE recordStatus=:recordStatus AND paymentStatus=:paymentStatus"); 

還要檢查,如果你對RECORDSTATUS和paymentStatus

1

有指數如果它只是你需要,你可以做的總和:

$stmt = $db->prepare("SELECT sum(amount) as sum FROM salesOrderTransaction WHERE recordStatus=:recordStatus AND paymentStatus=:paymentStatus"); 
$stmt->bindValue(':recordStatus', '1', PDO::PARAM_STR); 
$stmt->bindValue(':paymentStatus', 'Future', PDO::PARAM_STR); 
$stmt->execute(); 

$row = $stmt->fetch(PDO::FETCH_ASSOC); 

$response['totalTransactionsOwed'] = isset($row["sum"])?$row["sum"]:0; 
1

你爲什麼不使用SUM MySQL的功能?

選擇總和(金額)從量...

你也應該閱讀有關發電機,恕我直言

+0

感謝Viktar,我會看看。 –

相關問題