我試圖獲取MySQL表的所有行。這裏是代碼:PDO在選擇大量記錄時失敗
$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
子句來過濾我的記錄。
是的 - 記憶。檢查你的錯誤日誌。 – zerkms
除了你很可能在這裏獲取的內存問題,我真的懷疑你需要所有11000行的提取。這通常表明你應該停下來坐下來重新思考你真正在做什麼和爲了什麼。 –
我的歉意。我甚至沒有考慮檢查錯誤日誌。這樣一個愚蠢的問題。我花了一天的時間在Google上搜索。 – Beginner