Добавляет нули, вместо цифры в поле DATETIME

Патриот

Новичок
Добавляет нули, вместо цифры в поле DATETIME

Цыфра такого вида:
20052909172206
После добавления в базе:
0000-00-00 00:00:00

тип поля: DATETIME

Причем через phpmyadmin всё нормально добавляется.
 

kvf77

Red Devil
Что, не судьба написать вопрос в правильный форум?

Ответ на твой вопрос здесь:

DATETIME
 

Фанат

oncle terrible
Команда форума
цифр такого вида не бывает.
такого вида бывают только числа.
 

Патриот

Новичок
PHP:
mysql_query("INSERT INTO `articles` VALUES ('','$_POST[TITLE]','$_POST[ANNOUNCE]','$_POST[BODY]','$_POST[SUB]','$_POST[ARTICLE_DATE]')");
[SQL]
CREATE TABLE `mig_articles` (
`ID` int(11) NOT NULL auto_increment,
`TITLE` tinytext,
`ANNOUNCE` tinytext,
`BODY` mediumtext,
`SUB` int(11) NOT NULL default '0',
`ARTICLE_DATE` datetime default NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
[/SQL]
 

Фанат

oncle terrible
Команда форума
у тебя просили запрос не на создание таблицы.
а запрос, вставляющий дату.
а то, что ты здесь нарисовал - это не запрос, а кусок пхп кода, при том кривого
 

kvf77

Red Devil
Патриот

ты смеешься, где в твоем коде видно ЧТО ты вставляешь в базу? прочитай ссылку которую я дал
 

ForJest

- свежая кровь
Хм. Действительно странно. У меня тоже не вставляется. И
SELECT DATE_FORMAT('20052909172206', '%Y') даёт NULL

-~{}~ 29.09.05 16:46:

SELECT DATE_FORMAT('20052909172206', '%Y')
Как строка без разделительных знаков в формате 'YYYYMMDDHHMMSS' или в формате 'YYMMDDHHMMSS', при условии, что строка понимается как дата. Например, величины '19970523091528' и '970523091528' можно интерпретировать как '1997-05-23 09:15:28', но величина '971122129015' является недопустимой (значение раздела минут является абсурдным) и преобразуется в '0000-00-00 00:00:00'.
-~{}~ 29.09.05 16:47:

По-моему с форматом всё в порядке, почему не работает - не ясно.
 

Патриот

Новичок
Как строка без разделительных знаков в формате 'YYYYMMDDHHMMSS' или в формате 'YYMMDDHHMMSS', при условии, что строка понимается как дата. Например, величины '19970523091528' и '970523091528' можно интерпретировать как '1997-05-23 09:15:28', но величина '971122129015' является недопустимой (значение раздела минут является абсурдным) и преобразуется в '0000-00-00 00:00:00'.
----------------------------
ребят не подскажете как объяснить MySQL что строка, которую он проглатывает - ДАТА?
 

Фанат

oncle terrible
Команда форума
может быть, привести её в соответствие с указанным форматом?
 

ForJest

- свежая кровь
Патриот
Поменяй местами месяц и число 29 и 09. Совсемстными усилиями трёх человек стало видно
 

Патриот

Новичок
Автор оригинала: kvf77
ForJest
может потому что 29 месяца не бывает? :)
точно :)
kvf77
спасибо за статью

Проблема была в том, что формат не тот задавал, сейчас всё работает

-~{}~ 29.09.05 17:54:

Фанат
>а то, что ты здесь нарисовал - это не запрос, а кусок пхп кода, при том кривого
на последок, если не трудно, скажи что там кривое?
 

kvf77

Red Devil
Патриот

ты будешь смеяться, но там ВСЕ кривое. ты не пробовал включать сообщения об ошибках PHP? узнаешь всякого интересного дела.

1) всегда название элементов (если это не константы) в массивах бери в кавычки
2) никогда не лей в базу НЕ ПРОВЕРЕННЫЕ даныые, которые тебе передают пользователь
 

Патриот

Новичок
Вот весь код, он меня защитит от хакеров или ещё что то надо добавить?
PHP:
       if(isset($_POST['TITLE']) && isset($_POST['ANNOUNCE']) && isset($_POST['BODY'])&& isset($_POST['SUB']) && isset($_POST['ARTICLE_DATE']))
       {

       $_POST['ARTICLE_DATE']=str_replace(" ", "", $_POST['ARTICLE_DATE']);
       $_POST['ARTICLE_DATE']=str_replace(".", "", $_POST['ARTICLE_DATE']);
       $_POST['ARTICLE_DATE']=str_replace(":", "", $_POST['ARTICLE_DATE']);

       if(!is_numeric($_POST['SUB'])) exit();
       $_POST['TITLE']=addslashes($_POST['TITLE']);
       $_POST['ANNOUNCE']=addslashes($_POST['ANNOUNCE']);
       $_POST['BODY']=addslashes($_POST['BODY']);

       mysql_query("INSERT INTO `articles` VALUES ('','$_POST[TITLE]','$_POST[ANNOUNCE]','$_POST[BODY]','$_POST[SUB]','$_POST[ARTICLE_DATE]')");
       print "Добавлено";
       }
-~{}~ 29.09.05 18:02:

я ухожу, завтра почитаю ответы и отвечу :)
спасибо вам
 

Фанат

oncle terrible
Команда форума
kvf77
название элементов
1. в массивах нет никаких названий элементов.
2. синтаксис ключей ассоциативных массивов ничем не отличается от синтаксиса пхп.
то есть никакие элементы в кавычках писать не надо.
надо просто писать ключ с соблюдений правил синтаксиса.

-~{}~ 29.09.05 18:02:

Патриот
читай здесь: PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек.
 
Сверху