2013-11-07 3 views
0

У меня возникли проблемы с ее работой, мне нужно обновить таблицу в моей базе данных, изменив одно из полей для всех записей, которые попадают между двумя датами и имеют определенное имя пользователя.Обновление базы данных MYSQL Bewteen Two Dates

Значения даты передаются скрипту из формы.

Что у меня есть:

mysql_query(" 
    UPDATE data 
    SET status='Submitted' 
    WHERE (user_name = '$current_user->user_login') 
    AND labor_date >= '$_POST[start]' 
    AND labor_date <= '$_POST[end]'") 

Любые идеи, что я делаю неправильно? Спасибо за любую помощь!

L

+0

Есть ли у вас какие-либо ошибки сообщения/журналы? Пожалуйста, предоставьте дополнительную информацию. Кроме того, предоставьте информацию о вашем формате даты. Это может быть причиной, так как ваш запрос выглядит хорошо, на первый взгляд. Форматы, например, '1950-01-25' должен работать. Также имейте в виду атаки SQL-инъекций, поскольку вы пишете, что ваши даты взяты из формы. –

+0

Сообщение об ошибке, данные примера, структура таблицы? слышал о SQL-инъекции? –

+0

$ _POST [start], $ _ POST [end] находятся в правильном формате –

ответ

1

Убедитесь, что ваши даты в формате:

yyyy-mm-dd 

Вы также можете проверить mysql_affected_rows(), чтобы увидеть, если запрос успешно работает, но не найдя ни одной строки, которые соответствуют критериям.

Возможно, вы также захотите построить строку как переменную типа $ sql = "...";

Это позволит вам отследить его для целей отладки.

* Вы понимаете, что mysql_ - устаревшая библиотека и скоро будет полностью удалена из PHP? Вы должны использовать MySQLi или PDO на данный момент *

Ах да, один маленький совет по интерполяции массивов с ключами:.

AND labor_date >= '{$_POST['start']}' 
+1

Я согласен с комментарием @ ewein, я бы использовал синтаксис BETWEEN для этого, однако это не причина вашей проблемы - просто альтернатива, которая немного чище. – gview

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