#php
#php
Вопрос:
У меня есть таблица «расписания», где я всегда храню две записи (мои расписания сохраняются в формате pdf).
Одна запись относится к графику 1-го года, поэтому моя запись выглядит так:
(идентификатор, pdf, год) (1, ../uploads/shedules/1st_year.pdf, 1st_year)
Моя другая запись выглядит так:
(идентификатор, pdf, год) (2, ../uploads/shedules/2nd_year.pdf, 2nd_year)
Мои расписания обновляются каждую неделю, но могут обновляться без определенного порядка, сначала может быть обновлен график первого года или второго года.
И в моей форме, где я обновляю свои расписания, у меня также есть две ссылки для отображения текущих расписаний на каждый год.
И я хочу показать по моей ссылке «Посмотреть расписание 1-го года» мой PDF-файл расписания моего 1-го года, и я хочу показать по моей ссылке «Посмотреть расписание 2-го года» мой PDF-файл расписания моего 2-го года.
Вы знаете, как я могу это сделать, не делая двух выборок?? Я уже делал с двумя выборками, но теперь я пытаюсь использовать только одну.
Я пытался использовать «порядок по годам asc», но не работает нормально, потому что пользователь, который обновляет расписание, может вставить сначала мой 1-й год или 2-й год…
<?php
$readShedules = $pdo->prepare("SELECT pdf from schedules ORDER BY year ASC");
$readShedules->execute();
$result = $readShedules->fetch(PDO::FETCH_ASSOC);
echo '<div>';
echo '<a style="margin-right:10px;" href="../uploads/pdfs/'.$result['pdf'].'">See schedules 1st year</a>';
echo '<a href="../uploads/pdfs/'.$result['pdf'].'">See schedule 2nd year</a>';
echo '</div><!--viewcapa-->';
?>
Комментарии:
1. Они ОБНОВЛЕНЫ или просто новая строка вставлена в таблицу?
2. Спасибо за ваш ответ Nutic. Если я впервые вставляю расписания, я делаю вставку. Но тогда всегда происходит обновление..
Ответ №1:
Похоже, вы хотите получить несколько строк из базы данных. Если это так, я бы указал вам на метод PDO fetchAll
, который извлекает все ваши совпадения для этого запроса, вместо fetch
того, чтобы извлекать только первое.
Что-то в этом роде:
$results = $readShedules->fetchAll(PDO::FETCH_ASSOC);
echo '<div>';
foreach( $results as $result ) {
echo '<a style="margin-right:10px;" href="../uploads/pdfs/'.$result['pdf'].'">See schedules '.$result['year'].'</a>';
}
echo '</div><!--viewcapa-->';
Комментарии:
1. Спасибо, он отлично работал с методом выборки!
2. Добро пожаловать 🙂 Просто помните, что результирующий набор базы данных — это просто набор. Чтобы получить от него несколько результатов, вам нужно будет использовать метод, который извлекает несколько результатов, или использовать цикл с методом, который возвращает один на каждой итерации.
Ответ №2:
Вы можете попробовать использовать этот запрос
SELECT DISTINCT year, pdf FROM [TableName] ORDER BY ID DESC
Это вернет вам только 2 строки. И значение PDF будет самым последним обновлением.
Это на случай, если каждое обновление создает новую строку в таблице.