php - PDO 无法选择大量记录

标签 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 获取数据是否有任何限制,还是我滥用了它?

解决方案

检查 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/

相关文章:

php - 你如何为登录/未登录制作 2 个不同的 View ,如 facebook 的新闻源/登录页面?

php - 转到 Dreamweaver 服务器行为中的 anchor

Mysql 查询字符串组合结果

php - 如何在类中使用PDO连接工作

php - PDO 是否在所有 SELECT WHERE 查询中都需要参数?

php - 使用 PDO 语句登录表单 PHP

PHP/MySQL调试+优化

javascript - 单击 php 页面中的那个 div 时如何隐藏标题 "City"?

php - 如何统计多维数组的值属于某个键?

php - UserCake 迁移 - 管理员帐户/密码未登录