Используя Mysqli bind_param со столбцами даты и времени?

#php #mysql #sql #database #casting

#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();