2016-02-17 2 views
0

Я пытаюсь получить результаты запроса в массив PHP, запрос действительно прост и возвращает ровно 94 строки, процесс отлично работает, пока он не достигнет определенного количества результатов, я обнаружил это методом проб и ошибок, Я думал, что это проблема с данными, но на самом деле это проблема с PHP, потому что, если я запускаю запрос, массив опустеет, но если я поставлю LIMIT в запросе, процесс будет работать нормально, магическое число - 37, после чего массив не будет получать больше строк и ничего не отображает, это то, что я делаю:массивы опустошают после получения определенного количества результатов из базы данных?

PD. проблема, похоже, связана с полем , потому что, если я использую только поле id, я могу получить 94 строки без проблем.

$query = "SELECT Name AS DisplayText, id AS Value FROM branches ORDER BY DisplayText ASC LIMIT 37;"; 
$conn = new mysqli($host, $username, $password, $database); 
$res = $conn->query($query); 
$rows= array(); 
while ($row = mysqli_fetch_array($res, MYSQLI_ASSOC)) { 
$array['DisplayText'] = $row['DisplayText']; 
$array['Value'] = $row['Value']; 
array_push($rows,$array); 
} 
print json_encode($rows); 

этот способ работает, но я ограничен до 37 результатов из-за предела запроса, мне нужно 94 результаты, но если я удалить ограничение я не получаю ничего

другой путь, когда я пытался с тем же результат:

$query = "SELECT Name AS DisplayText, id AS Value FROM branches ORDER BY DisplayText ASC LIMIT 37;"; 
$conn = new mysqli($host, $username, $password, $database); 
$res = $conn->query($query); 
$rows= array();//rows 
while ($row= mysqli_fetch_array($res, MYSQLI_ASSOC)) { 
$rows[] = $row; 
}  
print json_encode($rows); 
+0

Проблема должна быть в вашем SQL, удаление LIMIT никогда не прекращает возвращать строки. Если вы положили 'echo mysqli_error ($ conn);' в конце, он говорит что-нибудь о каких-либо ошибках? Кроме того, поставьте 'error_reporting (E_ALL);' в верхней части файла, чтобы получить все предупреждения и ошибки, выводимые на веб-страницу для отладки. – Kalkran

+0

@Kalkran да, я пробовал все методы отладки, которые я знаю, сначала я думал, что это проблема с БД, и я проверял ошибки везде, я имею в виду, если я попробую любой другой запрос в этой таблице или других таблицах, исключая ** Имя ** поле все работает без проблем – CMP

+0

Итак, вы не получаете _any_ ошибок, но не получаете _any_ данных? Выполняются ли запросы с «LIMIT» из 38? 39? 50, 60? 94? – Kalkran

ответ

0

Возможно, вы превысите максимально допустимую память для php или для пакета mysql? Насколько большой текст «Имя» для каждой строки?

+0

не более 50 символов в каждой строке, I думаю, что у самого длинного 30 персонажей – CMP

0

Должно быть нечетным символом, который json_encode() не обрабатывает слишком хорошо. Убедитесь, что вы подаете на него UTF-8 или ISO-8859-1. Предложения, сделанные here, могут быть вам полезны.

Смежные вопросы