Показать полную графическую версию : Не получается вставить текущую дату в таблицу MySql?
Никита86
15-03-2015, 05:31
Здравствуйте. Вроде простой вопрос, но я уже всю клавиатуру разбил, решая его.
Нужно просто занести текущее время в текстовом формате в БД MySql. Делаю так:
$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());
Я уже и с кавычками извращался, по всякому пробовал, например вот так
mysql_query("UPDATE logs SET time='$my_time' WHERE login='$l' ") or die(mysql_error());
в общем, разные комбинации пробовал.
В результате в БД в поле time ничего не меняется, так и остаётся NULL, идущий по умолчанию.
Что это за глюк такой?
У вас есть база данных. База данных представляет собой набор таблиц. В частном случае у вас есть таблица logs. Вы не написали структуру таблицы logs и типы ее параметров, задавая вопрос. Затем, я не понимаю, откуда при запросе в базу данных база данных узнает, какому логину нужно изменить время? Какой тип формата хранения времени в колонке time базы данных? Задавая вопрос, нужно было бы указать, каким запросом создана таблица logs или ее колонки..
Никита86
15-03-2015, 06:09
У вас есть база данных. База данных представляет собой набор таблиц. В частном случае у вас есть таблица logs. Вы не написали структуру таблицы logs и типы ее параметров, задавая вопрос. Затем, я не понимаю, откуда при запросе в базу данных база данных узнает, какому логину нужно изменить время? Какой тип формата хранения времени в колонке time базы данных? Задавая вопрос, нужно было бы указать, каким запросом создана таблица logs или ее колонки.. »
Таблица logs была создана не запросом из РНР, а через phpmyadmin.
Насчёт логина - переменная $l правильно определяется (проверено) и передаётся через переменную сессии, я уже много раз успешно использовал эту переменную.
Далее, другие запросы UPDATE и INSERT успешно работают на этой страничке и в том числе успешно работают с таблицей logs.
Тут дело не в таблице. Если заменить значение $my_time на простую строку, то всё успешно обновляется в БД. Проблема кроется, наверное, где-то в функциях определения даты и времени. Вернее - в передаче значения времени из РНР в БД. Собака где-то там зарыта.
Формат поля time - VARCHAR.
А если вывести строку запроса через echo, скопировать и выполнить в phpMyAdmin? Уж он-то скажет, что MySQL не принимает. Может быть $my_time неверно формируется и там NULL подставляется на самом деле?
Я добавлял обратные кавычки к именам полей и таблиц, чтобы оно заработало:
$sql = "UPDATE `logs` SET `time`='$my_time' WHERE `login`='$l' ";
mysql_query($sql);
И кроме того, хранение в формате datetime выглядит более предпочтительным. Над ним потом удобнее запросы выборки исполнять.
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (формат MySQL DATETIME)
date возвращает значение в виде строки, т.е. преобразование в строку необязательно. Проблема с запросом, наверное. Попробуйте добавить точку с запятой перед закрытием строки кавычкой.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.