![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
в таблице есть поле с датой, по умолчанию она NULL, т.е. при создании таблицы я этому полю указал(DEFAULT NULL).. Так вот мне нужно следующее: если нету даты, то к текущей дате прибавить например 1 год и записать ее в таблицу, если есть, то взять уже имеющуюся дату прибавить к ней год и записать.. Делаю я так:
работает только когда нету даты.. если есть то год не прибавляется.. по идее в $select_enddate_arr['enddate'] хранится дата в том формате какая и нужна MySQL, она же от туда же и берется.. Но что-то не работает.. Подскажите пожалуйста.. |
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
сдается мне, что у тебя в запросе не дата, а арифметическое выражение...
а вообще, зачем тягать значение поля, если можно подставить его имя? UPDATE table SET enddate=ADDDATE(enddate, INTERVAL 1 YEAR) |
|||
|
||||
| Dmitry_177 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
да нет.. я привел код такой какой у меня..
вот так получилось.. спасибо |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
при чем здесь код?
я про запрос говорил, а не про код. учитесь, наконец, различать SQL запрос и пхп код, который его формирует. Это разные вещи. В запросе у тебя арифметическое выражение. выполни запрос SELECT 2007-12-15 что он вернёт? |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
что-то я не пойму.. где у меня там арифметика? Я составляю строку запроса только лишь и всего.. |
|||
|
||||
| SelenIT |
|
||||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
...т.е. в строковом виде, я полагаю. А при подстановке строк в запрос их надо брать в кавычки. Иначе с точки зрения базы это будет не строка нужного формата, а нечто совсем другое (на что и намекает пример Feldmarschallа ;). Потому что надо приучать себя при отладке скриптов, работающих с базой, выводить текст запроса на экран. Многое станет понятным с первого взгляда, и куча времени и нервов сэкономится. А вообще, в данном случае, можно действительно обойтись одним запросом UPDATE без предварительного вытягивания значения SELECT-ом и анализа его в скрипте. Вся необходимая логика поддерживается самим MySQL-ем:
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
||||
|
|||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
Dmitry_177,
в запросе. в запросе, который ты составляешь. выполни запрос SELECT 2007-12-15 что он вернёт? Это надо сделать обязательно. Чтобы понимать - что вообще делают твои скрипты. чтобы научиться отличать PHP код от SQL запроса. Чтобы понять - что делают твои запросы. Выполни, пожалуйста. |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
из всего я как понял чтов запросах нельзя делать арифметику??? т.е. нужно составлять строку и присваивать ее какой-то переменной.. а ее уже подставлять в mysql_query??? я так понял? хотя всеравно непонимаю.. почему нельзя составлять строк прям в запрсе..
|
|||
|
||||
| Golda |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 20 Всего: 42 |
Dmitry_177, составлять строки прямо в запросе можно. Проблема была просто в том, что Вы неправильно это сделали. Вместо
нужно было писать
Кавычки забыты. Как результат - MySql не понял, что речь идет о дате , а воспринял как выражение 2007-12-15 2007 минус 12 минус 15. Вот что пытался Вам втолкавать Feldmarschall. Если же говорить о ситуации в целом, не нужно делать в PHP то, с чем прекрасно справляется сама база данных. Воспользуйтесь запросом, который привел SelenIT. И кода меньше, и работать быстрее будет Это сообщение отредактировал(а) Golda - 12.1.2008, 09:00 -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
||||
|
|||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |