【问题标题】:Post an HTML Input with datetime Value to MySQL Database将带有日期时间值的 HTML 输入发布到 MySQL 数据库
【发布时间】:2018-11-20 03:44:52
【问题描述】:

我正在寻找一种解决方案,以将用户输入从 HTML 输入设置为“datetime-local”值捕获到 MySQL 数据库中,并将表字段设置为“datetime”。每当我提交表单时,都会生成一个 ID 并保存日期,但时间没有。例如: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 上的教程中获得了代码,到目前为止它正在运行。我只是希望能够得到他们选择的时间。

更新: 时间正在被节省,但它似乎是在军事时间。例如:输入 = 2018 年 11 月 22 日下午 5: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 html mysql database


    【解决方案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 行上方,然后在 VALUE 之后更新 $_POST 以捕获 $date,但是在我提交表单后,我收到了 HTTP 错误。 @miken32
    • @EataSandwhich 你把它用作 $_POST['date'] 了吗?因为那行不通,它只需要 $date。即价值($日期)
    • 我会更新我的问题以包含新代码@Dan W.
    • @EataSandwhich 时间'军事时间'是服务器处理日期时间的方式,您必须在将其从数据库中拉出后将其转换回来。
    • 哦....好的。所以我想我很擅长那个,对吧?如果你不能说我是这方面的专家哈哈@Dan W.
    猜你喜欢
    • 2021-11-04
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多