2017-06-14 40 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,我会看看。 –

相关问题