我正在尝试获取 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_table
或 SELECT * FROM my_table LIMIT 4000
时,它会成功运行。
PDO 获取数据是否有任何限制,还是我滥用了它?
解决方案
检查 Apache 错误日志后,我看到了这个错误:apache weAllowed memory size of 134217728 bytes exhausted
。 AS @Marcin Orlowski 在评论中说这是一个内存问题。所以我应该选择需要的列并使用 where
子句来过滤我的记录。
最佳答案
您应该添加 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'];
}
?>
关于php - PDO 无法选择大量记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46261733/