2010-11-04 3 views
3

У меня возникла небольшая проблема с получением добавленной даты в базе данных MySQL. Поле имеет тип DATE.PHP date() - вставка в базу данных MySQL

Прежде всего я увеличиваю дату со следующим кодом:

if($_POST['membershipLength'] == "6 Months") { 
    $renew = mktime(0, 0, 0, date("m")+9, date("d"), date("y")); 
} 

Тогда я желаю, чтобы войти: date("m/d/y", $renew) в столбец в базе данных.

Может ли кто-нибудь увидеть, где я ошибаюсь? Значение, которое он вставляет, состоит из 0, которые я принимаю по умолчанию.

+0

Спасибо за отзыв всем, но он все еще не работает ... код можно посмотреть здесь: http://pastebin.com/ZKaCkWnK Я пропуская что-то реальное просто, не так ли? Haha – 2010-11-04 13:23:31

ответ

5

MYSQL поле даты имеет следующий формат «Ymd» так что-то вроде «2010-11 -04" . Вы пытаетесь вставить значение как «2010/04/11». Измените свой первый параметр на «Y-m-d», и он должен работать :)

2

Попробуйте это:

date ("Y-m-d H:i:s", $renew); 

MySQL любит даты в определенном формате.

+1

«H: i: s» не требуется, если его тип столбца - DATE, а не DATETIME. MySQL проигнорировал бы это, я знаю, просто быть nitpicky;) – Gazillion

+0

Нет, совсем не @Gazillion - хороший комментарий. Я просто зацепил общий формат, но в этом случае дата («Y-m-d», $ renew); является оптимальным ответом. –

2

формат даты в MySQL является YYYY-MM-DD, и вы вставляете MDY попробовать с YMD будет решить вашу проблему

+0

Это сделало бы 2010-янв-Сан, не используйте заглавные буквы для вашего месяца и дня :) – Gazillion

+0

вам следует передать номера, такие как 2010-01-01 для jan, и дата в месяце DD - дата месяца, например 05 , 13, 22 и имеют максимум 30 или 31 в месяц и 29 или 28 для второго месяца года. – Badr

1

Я пробовал ваш код и работал нормально, кроме одного. Когда вы хотите добавить 6 месяцев, почему вы добавляете 9 месяцев?

if($_POST['membershipLength'] == "6 Months") { 



     $date = mktime(0, 0, 0, date("m")+6, date("d"), date("Y")); 

     $renew = date("Y-m-d", $date); 



    } elseif($_POST['membershipLength'] == "9 Months") { 



     $date = mktime(0, 0, 0, date("m")+9, date("d"), date("Y")); 

     $renew = date("Y-m-d", $date); 



    } elseif($_POST['membershipLength'] == "12 Months") { 



     $date = mktime(0, 0, 0, date("m")+12, date("d"), date("Y")); 

     $renew = date("Y-m-d", $date); 



    } 
+0

Ох, потому что 3 из этих месяцев бесплатны, поэтому он хранит дату обновления в базе данных, которая состоит из бесплатного 3 и выбранного времени членства ... Используете ли вы тип поля даты? – 2010-11-04 13:36:19

+0

oh ok, в этом случае добавить 3 :) Ya, Im, используя поле даты –

1

Спасибо за вашу помощь. Ошибка, которую я делал, кроме того, все исправления, которые вы все предлагали, заключались в том, что я проверял значение, которое не соответствовало. Дурак я!

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