SQL игнорирует 2-й критерий в предложении WHERE - PullRequest
0 голосов
/ 15 ноября 2011

Почему второй критерий в этом предложении WHERE игнорируется?

$old = time() - 2592000;
$sql_deleteold = ("DELETE FROM todolist WHERE status='done' AND stamp < $old");
mysql_query($sql_deleteold);

Я хочу удалить данные из базы данных старше 30 дней со статусом «выполнено».

Вместо этогоудаляются все строки со статусом «выполнено».

Ответы [ 4 ]

2 голосов
/ 15 ноября 2011

Я думаю, что ваш вопрос относится к "второму утверждению" в запросе SQL?

При таком предположении проблема удаления всех строк со статусом «выполнено» заключается в том, что фильтры WHERE похожи на условные операторы, подобные тем, которые используются в операторах «If».

Если первый оператор или фильтр WHERE имеет значение true, тогда выполнить.

Попробуйте сделать следующее:

$old = time() - 2592000;
$sql_deleteold = ("DELETE FROM todolist WHERE (status='done' AND stamp < $old)");
mysql_query($sql_deleteold);

Вы также можете проверить значение $ old и сравнить его со значениями в поле 'stamp' вашей таблицы, чтобы убедиться, что в строке 'stamp' есть строки, имеющие значение больше, чем значение $ old.

2 голосов
/ 15 ноября 2011

Вы пытались отладить свой запрос? Вместо удаления запроса попробуйте выбрать значения:

SELECT * FROM todolist WHERE status = 'done' AND stamp < $old

Выбирает ли вы ожидаемые результаты? Если он не продолжит подстраивать его, попытайтесь удалить записи.

1 голос
/ 15 ноября 2011

У вас может быть проблема с цитированием. Чтобы быть уверенным, попробуйте:

$sql_deleteold = "DELETE FROM `todolist` WHERE `status`='done' AND `stamp` < '".$old."';";

Также, когда вы вставляете поля, вы устанавливаете поле stamp с помощью функции php $ time () $ или оно устанавливается функциями SQL? Поскольку представление времени может отличаться в зависимости от типа поля stamp.

0 голосов
/ 15 ноября 2011

Попробуйте выдать SELECT stamp FROM todolist и посмотрите, что вы получите.Предположительно, они будут иметь значения меньше time() = 2592000.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...