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

Обычно студенты узнают об уроках в один и тот же день, но я заметил будущие даты для некоторых записей, поэтому я думаю о запуске sql-запроса, который будет анализировать конкретный столбец, и если он найдет более 2 записей с будущей датой (+1 от текущего в формате ГГГГ-ММ-ДД), он должен использовать почту php для отправки мне по почте, иначе будет эхо, что никаких будущих уроков не найдено.

Я думал, что это можно интегрировать в мой PHP-код с помощью SQL-запроса, но я не совсем уверен, как это сделать, поэтому любая помощь будет принята с благодарностью.

Мне было интересно, верен ли мой нынешний подход:

$sql = "SELECT publisheddate FROM lessons WHERE CONVERT(char(10), GetDate() +1,126);
$result = $conn->query($sql);
if ($result->num_rows < 2) {
    echo "2 new lessons for tomorrow";
}
} else {
    echo "0 future lessons";
0
JohnnyBratsoni 11 Сен 2018 в 19:53

1 ответ

Лучший ответ

В предложении where необходимо указать, с каким столбцом вы сравниваете дату преобразования. Кроме того, вам, вероятно, будет лучше вернуть count(*) строк из базы данных, чем возвращать все строки в ваш PHP-скрипт, и PHP подсчитывает их. Если завтра у вас будет миллион классов (или если школа случайно продублирует класс миллион раз в базе данных ...), вашему скрипту придется ждать, чтобы получить миллион строк по сети, а не одно целое число. .

Попробуйте такой оператор SQL (вы указали, что publisheddate - это тип данных date, поэтому я не буду беспокоиться о преобразовании его в дату):

SELECT 
    count(*) 
FROM 
    lessons 
WHERE 
    publisheddate = DATE_ADD(CURDATE(), INTERVAL +1 DAY)

Это вернет целое число, показывающее, сколько строк соответствует этому критерию, с которым может работать ваш PHP-скрипт.

0
RToyo 11 Сен 2018 в 17:27