#php
#php
Вопрос:
У меня есть следующий запрос в существующем скрипте — но он не всегда возвращает значение, хотя оно должно основываться на том, что есть в базе данных. В базе данных есть много вещей, которые он ДОЛЖЕН захватить — они там есть.
Не вижу в этом ничего плохого — но я почти этим больше не занимаюсь 🙂 Видишь что-нибудь?
$query = "SELECT id FROM xtags WHERE tag_id = '$tagid' ORDER BY RAND() Limit 2";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$query = "SELECT * FROM xtable WHERE id = '$row[id]'";
$result = mysql_query($query) or die(mysql_error());
$row2 = mysql_fetch_assoc($result);
echo $row2[title];
}
Комментарии:
1. неэффективно, может быть выполнено с помощью 1 запроса. learn ПРИСОЕДИНИТЬСЯ
2. Вы могли бы сделать то же самое только с одним SQL-запросом
3. Без сомнения — просто выполняю некоторую отладку здесь.
4. исправление запросов, чтобы вам не приходилось использовать цикл, решит проблему в первую очередь.
Ответ №1:
$result используется внутри цикла и снаружи, попробуйте создать новую переменную внутри и не использовать повторно внешнюю.
Ответ №2:
Вы повторно используете $result
переменную внутри цикла, которая перезаписывает значение для использования в while
условии. Используйте другое имя для $query
и $result
внутри цикла.
Комментарии:
1. Дело не в этом, Ник. Все еще возвращая случайные наборы «без результата».
2. .. и вы уверены, что ваши инструкции SQL верны? Похоже, что в вашем коде нет ничего неправильного, из-за чего ваши SQL-запросы становятся причиной дальнейших проблем, с которыми вы можете столкнуться.
Ответ №3:
Я не знаю, нормально ли это, но вы используете $ result дважды, один перед «while», а другой внутри «while».
Я бы лично разделил строку и переменную $row.
Почему бы не использовать var_dump() для просмотра $row и других переменных???
Ответ №4:
Я не понимаю, что вы пытаетесь сделать на самом деле, но попробуйте это:
$query = "SELECT id FROM xtags WHERE tag_id = '".$tagid."' ORDER BY RAND() Limit 2";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
$query2 = "SELECT * FROM xtable WHERE id = '".intval($row[id])."'";
$result2 = mysql_query($query2) or die(mysql_error());
$row2 = mysql_fetch_assoc($result2);
echo $row2[title];
}
Ответ №5:
Проблема решена — выполнил оператор join.