我有最古怪的PHP PDO問題,我希望你們能爲我解決這個問題。當LIMIT太高時,PHP的PDO查詢不會執行?
如果我設置$checkLimit
爲50000,查詢工作正常。但是,如果我將它設置爲任何超過50K,它不返回任何結果 - 它不投任何錯誤消息是(我已經把它們使用$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)
$sql = "
SELECT d_domain_name AS domainName, d_domain_id AS domainID
FROM domains
ORDER BY d_domain_name_length ASC, d_domain_name ASC
LIMIT :checkLimit
";
$stmt = $db->prepare($sql);
$stmt->bindValue(':checkLimit', intval($checkLimit), PDO::PARAM_INT);
$stmt->execute();
$results = $stmt->fetchAll();
foreach ($results as $result) {
// 50k moments of magic
}
如果我運行。 PHP以外的查詢,它可以與任何限制(甚至500k,需要約3分鐘)
我試過改變$results = $stmt->fetchAll()
到while ($result = $stmt->fetch()) {}
爲了嘗試和節省內存,但沒有做任何事情,不幸的是,
有人能告訴我我在做什麼錯嗎?我錯過了什麼?爲什麼我不能超過50k?
考慮到'int'值不是無限的,你可能已經超過了限制數。 – fedorqui 2013-03-22 21:53:21
它不是什麼?不要讓我們陷入懸念! – 2013-03-22 21:53:36
@fedorqui:50,000將非常適合32bit PHP int – 2013-03-22 21:54:45