У меня есть самая странная проблема с PHP PDO, и я надеюсь, что вы, ребята, можете разобраться со мной.PHP-запрос PDO не выполняется, когда LIMIT слишком высок?
Если я установил $checkLimit
на 50000, запрос будет работать нормально. Однако, если установить его на что-либо выше 50к, он не возвращает никаких результатов - и он не отбрасывает никаких сообщений об ошибках либо (я уже повернул их на использовании $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, он работает с любым пределом (даже 500 тыс., занимает около 3 минут).
Я попытался сменить $results = $stmt->fetchAll()
на while ($result = $stmt->fetch()) {}
, чтобы попытаться сохранить память, но это ничего не сделало, к сожалению
Может ли кто-нибудь сказать мне, что я делаю неправильно здесь? Что мне не хватает? Почему я не могу пройти через 50 000?
Учитывайте, что значения 'int' не бесконечны, возможно, вы получили превышение лимита. – fedorqui
Это не так? Не оставляй нас в напряжении! –
@fedorqui: 50 000 подходят ОЧЕНЬ удобно в 32-битный PHP int –