Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Не получается вставить текущую дату в таблицу MySql? (http://forum.oszone.net/showthread.php?t=296929)

Никита86 15-03-2015 05:31 2482815

Не получается вставить текущую дату в таблицу MySql?
 
Здравствуйте. Вроде простой вопрос, но я уже всю клавиатуру разбил, решая его.
Нужно просто занести текущее время в текстовом формате в БД MySql. Делаю так:
PHP код:

$my_time=date"H:i:s" );
    
$my_time=(string)($my_time);//на всякий случай, у нас же текстовое поле
     
mysql_query("UPDATE logs SET time='" $my_time."' WHERE login='$l' ") or die(mysql_error()); 

Я уже и с кавычками извращался, по всякому пробовал, например вот так
PHP код:

mysql_query("UPDATE logs SET time='$my_time'  WHERE login='$l' ") or die(mysql_error()); 

в общем, разные комбинации пробовал.
В результате в БД в поле time ничего не меняется, так и остаётся NULL, идущий по умолчанию.
Что это за глюк такой?

mrcnn 15-03-2015 05:47 2482816

У вас есть база данных. База данных представляет собой набор таблиц. В частном случае у вас есть таблица logs. Вы не написали структуру таблицы logs и типы ее параметров, задавая вопрос. Затем, я не понимаю, откуда при запросе в базу данных база данных узнает, какому логину нужно изменить время? Какой тип формата хранения времени в колонке time базы данных? Задавая вопрос, нужно было бы указать, каким запросом создана таблица logs или ее колонки..

Никита86 15-03-2015 06:09 2482817

Цитата:

Цитата mrcnn
У вас есть база данных. База данных представляет собой набор таблиц. В частном случае у вас есть таблица logs. Вы не написали структуру таблицы logs и типы ее параметров, задавая вопрос. Затем, я не понимаю, откуда при запросе в базу данных база данных узнает, какому логину нужно изменить время? Какой тип формата хранения времени в колонке time базы данных? Задавая вопрос, нужно было бы указать, каким запросом создана таблица logs или ее колонки.. »

Таблица logs была создана не запросом из РНР, а через phpmyadmin.
Насчёт логина - переменная $l правильно определяется (проверено) и передаётся через переменную сессии, я уже много раз успешно использовал эту переменную.
Далее, другие запросы UPDATE и INSERT успешно работают на этой страничке и в том числе успешно работают с таблицей logs.
Тут дело не в таблице. Если заменить значение $my_time на простую строку, то всё успешно обновляется в БД. Проблема кроется, наверное, где-то в функциях определения даты и времени. Вернее - в передаче значения времени из РНР в БД. Собака где-то там зарыта.
Формат поля time - VARCHAR.

Coutty 15-03-2015 06:58 2482821

А если вывести строку запроса через echo, скопировать и выполнить в phpMyAdmin? Уж он-то скажет, что MySQL не принимает. Может быть $my_time неверно формируется и там NULL подставляется на самом деле?

Я добавлял обратные кавычки к именам полей и таблиц, чтобы оно заработало:
PHP код:

$sql "UPDATE `logs` SET `time`='$my_time'  WHERE `login`='$l' ";
mysql_query($sql); 

И кроме того, хранение в формате datetime выглядит более предпочтительным. Над ним потом удобнее запросы выборки исполнять.
PHP код:

$today date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (формат MySQL DATETIME) 


mrcnn 15-03-2015 08:30 2482832

date возвращает значение в виде строки, т.е. преобразование в строку необязательно. Проблема с запросом, наверное. Попробуйте добавить точку с запятой перед закрытием строки кавычкой.


Время: 08:15.

Время: 08:15.
© OSzone.net 2001-