Я знаю, что это должно быть довольно просто, но я пытаюсь сделать запрос, где я могу показать континент, а затем показать все страны с аэропортом с этого континента, до сих пор этот запрос работает для меня:
$sql = "SELECT *, GROUP_CONCAT(DISTINCT ,country, SEPARATOR '')
as country
FROM airports
GROUP BY continent
ORDER BY continent, country ASC";
if($result = mysqli_query($conn, $sql)){
if(mysqli_num_rows($result) > 0){
while($row = mysqli_fetch_array($result)){
echo "<hr>" . $row['continent'] . "" . $row['country'] . "";
}
// Free result set
mysqli_free_result($result);
} else{
echo '<div class="autocomplete__item alert--warning"> No records matching your query were found.</div>';
}
} else{
echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
}
Он показывает название континента и каждую страну в нем с одним или несколькими аэропортами. Итак, мне нужно, чтобы эта страна была окружена большим количеством HTML. Я думаю, лучший способ - вложить запросы, но я сделал это в той же декларации GROUP_CONCAT, и это работает! Кроме того, что HTML разбивается.
Я меняю GROUP_CONCAT на:
GROUP_CONCAT(DISTINCT '<div class=\"push-button\"><input type=\"checkbox\" id=\"',alpha_2,'\"><label for=\"',alpha_2,'\">',country,'</label></div>' SEPARATOR '')
Это технически работает, но в какой-то момент он разрывает разметку:
<div class="push-button">
<input type="checkbox" id="bm">
<label <hr>Asia<div class="push-button"><input type="checkbox" id="cn"><label for="cn">China</label></div>
Или другой последний ряд:
<div class="p </section>
Это происходит примерно в 5-6 раз в 56 странах.
Вероятно, я должен вложить запросы, не уверен и не уверен, как это сделать, но... Разве это не странно, или я чего-то не хватает?
TL; DR:
SET SESSION group_concat_max_len = 10000;
Хорошо, решил. Проблема заключалась не в том, что GROUP_CONCAT тормозит разметку, бывает, что она имеет максимальное значение, по умолчанию 1024 (я обнаружил, что делал тест с MySQL Workbench).
Поэтому я нашел решение здесь: в MySQL можно вернуть более 1024 символов из GROUP_CONCAT