我试图获取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是否有限制获取数据或我滥用它?
SLUTION
检查Apache错误日志后,我看到了这个错误:apache weAllowed memory size of 134217728 bytes exhausted
。 AS @Marcin Orlowski在评论中说这是一个记忆问题。所以我应该选择所需的列并使用where
子句来过滤我的记录。
答案 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'];
}
?>