【问题标题】:PDO large resultsPDO 大结果
【发布时间】:2014-11-23 21:36:46
【问题描述】:

我对 PDO 返回不完整的结果有疑问。在 phpmyadmin 中执行的特定查询返回 6000 行。 PDO 执行的相同查询仅返回前 1160 行。似乎是某种限制或其他东西。这个设置

$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); 

没有帮助。

谢谢解答

编辑

SELECT 
T1.`column1`,
MONTH( FROM_UNIXTIME( T1.`column2` ) ) AS month,
YEAR( FROM_UNIXTIME( T1.`column2` ) ) AS year, 
(SELECT CONCAT(T2.`column1`,';',T2.`column2`,';',T3.`column1`) FROM `table2` T2 WHERE     
T2.`column8` = T1.`column8` AND T2.`column1` LIKE '%new%') AS news,
(SELECT CONCAT(T2.`column1`,';',T2.`column2`,';',T3.`column1`) FROM `table2` T2 WHERE    
T2.`column8` = T1.`column8` AND T2.`column1` LIKE '%old%') AS oldies,
FROM table1 T1
LEFT JOIN table3 T3 ON T1.column9 = T3.column2
WHERE T1.`column2` > 1388534400

这将是一次性执行,因此不需要优化

【问题讨论】:

  • 您可以发布您的查询吗?
  • 这不可能是查询。此查询存在语法错误。
  • Danke,这里重写查询时只是输入错误。
  • Danke 是德国人 ^^ 这意味着谢谢 :) 但是你怎么知道有 6k 个条目被选中......你怎么看你只得到 1160?其实我认为你有一个低设置max_input_vars
  • 6k = phpmyadmin, 相同的查询 PDO while($row = $stmt->fetch()){...} = 1160. PDO 可能受 max_input_vars 影响?

标签: php pdo


【解决方案1】:

尝试在php.ini 中将max_input_vars 增加到10000,看看是否有任何变化。

我猜现在是 1000,你可能会遇到内存错误。

【讨论】:

  • 问题已解决。我不确定 max_input_vars 是否是问题,但我将此参数设置为 10000。非常感谢。
  • 欢迎您。我真的很想知道为什么有人对正确答案投反对票:)
猜你喜欢
  • 1970-01-01
  • 2011-12-12
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 2011-04-27
  • 2017-02-08
  • 2012-10-09
相关资源
最近更新 更多