мой код отлично работает с двумя выборками, но я пытаюсь использовать только одну

#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 будет самым последним обновлением.
Это на случай, если каждое обновление создает новую строку в таблице.