2013-02-17 2 views
0

В настоящее время я разрабатываю систему для управления учащимися, которые находятся в отчете в школе, но я попал в камнем преткновения. В моей таблице SQL («onreport») есть поле под названием «продолжительность». Мне нужны записи, в которых дата, хранящаяся в этой строке, передается для удаления, 1. Срок действия отчета истек.Удаление записей из таблицы SQL при превышении даты

<?php 
    include('connect.php'); //connect to the database 
    $today = new DateTime("now"); 
    $f_today=$today->format('Y-m-d'); 
    mysql_query('DELETE FROM onreport WHERE duration ==$f_today'); 
    //print('$f_today') 
    ?> 

Я понимаю, что это может быть не самый эффективный метод, даже если он работает, но я отчаялся! Я знаю, что код запущен, потому что в том числе выписанный оператор печати печатает сегодняшнюю правильную дату в том же формате, что и формат в таблице. Столбец длительности - это тип «дата», а в таблице он отображается как yyyy-mm-dd

+0

У вас возникли ошибки? – DevelopmentIsMyPassion

+3

Можете ли вы опубликовать структуру таблицы или, по крайней мере, рассказать нам, что такое тип SQL? –

+0

И ошибок нет. – user1892282

ответ

1

Кажется, что вместо сравнения дат вы сравниваете строку, которая обычно считается плохой практикой. Но так как вы не опубликовали свою схему БД, это сложно сказать.

Однако, если вы хотите удалить все отчеты, отправленные до сегодняшнего дня, вы можете использовать чистый SQL запрос при условии, что продолжительность поле типа DATE:

DELETE FROM onreport WHERE TIMESTAMPDIFF(DAY,CURDATE(),duration)>0 

Эти запросы сравнить две даты: CurDate(), который - текущее время сервера со значением продолжительности и возвращает результат в количестве дней. Если это значение больше нуля, строка удаляется.

+0

Отлично! Это было всего лишь трюк, я знал, что это халатность, я просто не знал, как это сделать. Спасибо большое :) – user1892282

+0

Добро пожаловать :) – Julien

Смежные вопросы