#php #sql
#php #sql
Вопрос:
Я создаю чрезвычайно простую систему публикации, и, похоже, я не могу понять, как получить самые последние строки из определенной таблицы. Я пробовал другие решения, предлагаемые здесь, но мои сообщения были размещены случайным образом. Как бы мне этого добиться? Мой код приведен ниже.
function load_posts(){
$posts_sql = "SELECT * FROM posts";
$posts_result = PhoenixDatabaseDatabase::$database->query($posts_sql);
while($row = $posts_result->fetch_assoc()){
$posts_display = '
<div class = "card" style = "width:500px">
<div class = "card-body">
<div class = "card-title">'. $row['username'] .'</div>
<p>'. $row['content'] .'</p>
</div>
</div>
';
echo $posts_display;
}
}
Опять же, я хочу, чтобы сообщения отображались от самых последних до старых.
Комментарии:
1. Пожалуйста, предоставьте примерные данные.
2. Почему бы просто не использовать
ORDER BY
?3. Какую конкретную реляционную базу данных вы используете? Пометьте свой вопрос конкретной СУБД.
Ответ №1:
В каждой строке должна быть информация, которая фиксирует эту информацию. Наиболее распространенными подозреваемыми являются:
- автоматически увеличивающийся идентификатор
- дата создания
Затем вы просто просите базу данных отсортировать результаты. Например, если post_id
является автоматически увеличиваемым идентификатором:
select p.*
from posts p
order by p.post_id;
Комментарии:
1. Мои post_id основаны на user_id, поэтому, если я добавлю автоматическое увеличение к post_id, я не получу никаких ошибок, если в столбце post_id есть два одинаковых значения?
2. @Neutron . . . Я просто не понимаю вопроса в комментарии.
user_id
они не имеют никакого отношения к вашему вопросу или этому ответу. Приведет ли то, что вы говорите, к ошибке, зависит от многих факторов, таких как ваша модель данных и запрос, на который вы ссылаетесь.
Ответ №2:
ВЫБЕРИТЕ * ИЗ ПОРЯДКА ИМЕН таблиц ПО идентификатору DESC
// порядок по должен быть с первичным ключом