#php #mysqli
#php #mysql #mysqli
Вопрос:
Как вы вставляете данные в столбец даты или времени MySQL, используя PHP mysqli и bind_param?
Ответ №1:
Как и любая другая строка
$stmt = $mysqli-gt;prepare('insert into foo (dt) values (?)'); $dt = '2009-04-30 10:09:00'; $stmt-gt;bind_param('s', $dt); $stmt-gt;execute();
Ответ №2:
Временные метки в PHP являются целыми числами (количество секунд с эпохи UNIX). Альтернативой вышесказанному является использование параметра даты/времени целочисленного типа, а также функций MySQL FROM_UNIXTIME
и UNIX_TIMESTAMP
$stmt = $mysqli-gt;prepare("INSERT INTO FOO (dateColumn) VALUES (FROM_UNIXTIME(?))"); $stmt-gt;bind_param("i", $your_date_parameter); $stmt-gt;execute();
Комментарии:
1. @Rob: Когда я использую это, устанавливается дата 1970/01/01
2. Допустимый диапазон временной метки обычно составляет от Пт, 13 декабря 1901 г. 20:45:54 по Гринвичу до Вт, 19 января 2038 г. 03:14:07 по Гринвичу. (Это даты, соответствующие минимальному и максимальному значениям для 32-разрядного целого числа со знаком). Однако до PHP 5.1.0 этот диапазон был ограничен с 01-01-1970 по 19-01-2038 в некоторых системах (например, Windows).
Ответ №3:
Для текущей даты/времени вы можете использовать стандартную процедуру MySQL. Вам не нужно это готовить.
$query = "INSERT INTO tablename "; $query .= "VALUES(?,?,?,NOW()) "; $preparedquery = $dbaselink-gt;prepare($query); $preparedquery-gt;bind_param("iii",$val1,$val2,$val3);
Ответ №4:
Я использовал функцию date (), и это решило мою проблему.
$stmt = $mysqli-gt;prepare("INSERT INTO FOO (dateColumn) VALUES ?"); // 6/10/2015 10:30:00 $datetime = date("Y-m-d H:i:s", mktime(10, 30, 0, 6, 10, 2015)); $stmt-gt;bind_param("s", $datetime); $stmt-gt;execute();
Ответ №5:
сначала установите дату и время с помощью функции date() —
$date=date("d/m/y"); $time=date("h:i:sa");
затем передайте его в подготовленный оператор, как и любую другую строковую переменную-
$stmt = $mysqli-gt;prepare("INSERT INTO FOO (dateColumn, timeColumn) VALUES (?,?)"); $stmt-gt;bind_param("ss", $date , $time); $stmt-gt;execute();