#php #mysqli
#php #mysqli
Вопрос:
Этот фрагмент моего PHP-кода не выводит месяцы, дни, часы .. и т.д. Это код:
$dat = date('Y-m-d H:i:s');
$stmt = $LINK ->prepare("INSERT INTO NewUser VALUES (NULL, ?, ?, ?, ?)");
$stmt->bind_param('isss',$dat, $Phone, $User, $Pass);
/* execute prepared statement */
$stmt->execute();
И вывод в моей базе данных — это только год.
итак, чего мне не хватает после выполнения всего, что здесь написано?
Комментарии:
1. Вы передаете дату как целое число. Это означает, что он будет интерпретировать только часть строки до первого нечислового символа.
2. Вы привязываете дату как целое число, из-за чего PHP принимает только часть года.
3. @Johannes Нет. На самом деле, это varchar . Если я устанавливаю его как дату в phpmyadmin, он выдает мне только нули.
Ответ №1:
Вы всегда должны связывать параметры в виде строк. Первый аргумент в bind_param()
— это список типов. Все они должны быть s
.
$stmt->bind_param('ssss',$dat, $Phone, $User, $Pass);
Когда вы связываете как целое число, PHP преобразует строку в целое число. 2021-01-29 11:11:11
будет преобразован в 2021
, поскольку -
не является числом. Остальная часть строки будет отброшена.
Единственный раз, когда вы должны использовать что-то в виде целого числа или строки, — это когда MySQL не может определить правильный тип. Это 0,001% всех случаев.
Если вас смущает mysqli API, пожалуйста, изучите PDO вместо этого. Это проще для начинающих и предлагает больше функциональности.
Кроме того, убедитесь, что ваш тип столбца в базе DateTime
данных не varchar
или int
! Если вам нужна текущая дата, тогда используйте NOW()
SQL, а не PHP date()
.