Разместите HTML-ввод со значением datetime в базе данных MySQL

Я ищу решение для захвата ввода пользователя из ввода HTML, установленного на значение «datetime-local», в базу данных MySQL с полем таблицы, установленным на «datetime». Каждый раз, когда я отправляю форму, создается идентификатор и сохраняется дата, а время - нет. Пример: 2018-11-20 00:00:00.

Мой HTML:

<form class = "" action = "/index.php" method = "post">
  <input type = "datetime-local" name = "myDate" id = "myDate"><br /><br />
  <button id = "submit" value = "submit">Submit</button><br /><br />
</form>

Мой PHP:

// Check Our Connection
if ( $mysqli->connect_error ) {
  die( 'Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error );
}

// Insert Our Data
$sql = "INSERT INTO test_one ( mydate ) VALUES ( '{$mysqli->real_escape_string($_POST['myDate'])}' )";
$insert = $mysqli->query($sql);

// Print Response from MySQL
if ( $insert ) {
  echo "Success! Row ID: {$mysqli->insert_id}";
} else {
  die("Error: {$mysqli->errno} : {$mysqli->error}");
}

// Close Connection
$mysqli->close();

Я получил код из учебника на Youtube, и пока он работает. Я просто хочу получить время, которое они выбирают.

ОБНОВИТЬ: Время экономится, но похоже на военное время. Пример: Ввод = 22.11.2018 17:00; Выход = 2018-11-22 17:00:00

ОБНОВЛЕНИЕ ПОСЛЕ ПЕРВОГО КОММЕНТАРИИ: Это направляет меня на неудачный HTTP-запрос -

  // Check Our Connection
  if ( $mysqli->connect_error ) {
    die( 'Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error );
  }

  // Insert Our Data
  $date = strftime('%Y-%m-%d %H:%M:%S', strtotime(real_escape_string($_POST['myDate'])));
  $sql = "INSERT INTO test_one ( mydate ) VALUES ( '{$mysqli->real_escape_string($_POST['$date'])}' )";
  $insert = $mysqli->query($sql);

  // Print Response from MySQL
  if ( $insert ) {
    echo "Success! Row ID: {$mysqli->insert_id}";
  } else {
    die("Error: {$mysqli->errno} : {$mysqli->error}");
  }

  // Close Connection
  $mysqli->close();

Если это имеет какое-либо отношение к '' около $ date, я пробовал без него и получил ту же ошибку.

Заранее спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
907
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема в том, что datetime-local добавляет T посередине, то есть 2018-11-19T10: 52: 23. Вы должны изменить формат, чтобы удалить T. Может быть, попробуйте следующее:

$date = strftime('%Y-%m-%d %H:%M:%S', strtotime(real_escape_string($_POST['myDate'])));

К сожалению, у меня это не сработало. Однако, спасибо! Я поместил его над строкой $ sql, затем обновил $ _POST после VALUE, чтобы зафиксировать $ date, но после отправки формы я получил ошибку HTTP. @ miken32

EataSandwhich 20.11.2018 04:57

@EataSandwhich Вы использовали его как $ _POST ['date']? Поскольку это не сработает, это должно быть просто $ date. т.е. ЗНАЧЕНИЯ ($ date)

Dan W. 20.11.2018 04:59

Я обновлю свой вопрос, чтобы включить новый код @Dan W.

EataSandwhich 20.11.2018 05:00

@EataSandwhich Время 'военное время' - это то, как серверы обрабатывают datetime, вы должны преобразовать его обратно после того, как вы вытащите его из базы данных.

Dan W. 20.11.2018 05:03

Ох, хорошо. так что я думаю, что тогда я хорошо с этим, не так ли? Если вы не можете сказать, что я эксперт в этом хахах @Dan W.

EataSandwhich 20.11.2018 05:05

Другие вопросы по теме