PDO无法选择大量记录

时间:2017-09-17 07:34:02

标签: php mysql pdo

我试图获取MySQL表的所有行。这是代码:

$sql = "SELECT * FROM my_table";
$connection = new 
PDO('mysql:host=localhost;dbname=dbname;charset=utf8','user', 'password');
$statement =$connection->prepare($sql);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_ASSOC);

my_table表有145列,有11000条记录。 当我运行代码时,它无法获取所有记录。但是,当我将$ sql更改为SELECT ID FROM my_tableSELECT * FROM my_table LIMIT 4000时,它会成功运行。

PDO是否有限制获取数据或我滥用它?

SLUTION

检查Apache错误日志后,我看到了这个错误:apache weAllowed memory size of 134217728 bytes exhausted。 AS @Marcin Orlowski在评论中说这是一个记忆问题。所以我应该选择所需的列并使用where子句来过滤我的记录。

1 个答案:

答案 0 :(得分:0)

您应该添加foreach选项以正确获取它。 只需按下面的方式回显行列,即可显示任何列。

<?php
$connection = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8','user', 'password');
$sql = "SELECT * FROM `my_table`";
$statement =$connection->prepare($sql);
$statement->execute();
$result1 = $statement->fetchAll(PDO::FETCH_ASSOC);
//Re written by Ajmal PraveeN
foreach($result1 as $result){
echo $result['column'];
echo $result['column2'];
}
?>