【问题标题】:HTML Date Input to SQL using php使用 php 将 HTML 日期输入到 SQL
【发布时间】:2015-09-27 16:45:15
【问题描述】:

我一直在尝试使用用 HTML 编写的表单将“名称”和“日期”输入 SQL 数据库。

关于与 SQL 的连接,一切都很好。只是使用 HTML5 日期输入类型(包括下拉日历)数据和 PHP 似乎没有出现。 当我将数据输入到 SQL 表中时,“名称”会显示,但“日期”保持空白。 我在下面放了一些代码。表单是 input.html,数据处理代码是 table.php。 DB名为users,表名为staff。

input.html

<html>
<form action='table.php' method='POST'>
    Name <input type="text" name="name"> <br />
    Date of Expiry <input type="date" name="date1"> <br />
    <input type="submit" name="submit" value="Submit"> <br />
</form>
</html>

table.php

<?php
  $name = $_POST["name"];
  $date1 = $_POST["date1"];
  $servername = "exampleserver.net";
  $uname = "exampleusername";
  $pass = "password";
  $dbname = "users";
  $errors = array();
  $conn = new mysqli($servername, $uname, $pass, $dbname);
  if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
  } 
  if(mysqli_query($conn,"INSERT INTO staff (`name`, `date1`) VALUES('$name','$date1')")) { 
    header("Location: http://newpageafterdataentry.com"); 
    die(); 
  } else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
  } 
  mysqli_close($conn);
?>

【问题讨论】:

  • date 列的数据类型是“日期”吗?这将导致数据库不接受任何未以 MySQL 日期格式(即 YYYY-MM-DD)格式化的日期信息。
  • 尝试转储 $date1 并在此处发布转储 (var_dump($date1)),我怀疑日期格式与预期不符
  • 与您的问题没有直接关系,但请记住正确escape the user input您在查询中使用!

标签: php html mysql


【解决方案1】:

您可以使用strtotime() 转换为时间戳,使用date() 进行格式化,然后再保存到数据库mysql。尝试以下操作:

$day1 = strtotime($_POST["date1"]);
$day1 = date('Y-m-d H:i:s', $day1); //now you can save in DB

完整的代码应该是:

<?php
  $name = $_POST["name"];
  $day1 = strtotime($_POST["date1"]);
  $day1 = date('Y-m-d H:i:s', $day1); //now you can save in DB
  $servername = "exampleserver.net";
  $uname = "exampleusername";
  $pass = "password";
  $dbname = "users";
  $errors = array();
  $conn = new mysqli($servername, $uname, $pass, $dbname);
  if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
  } 
  if(mysqli_query($conn,"INSERT INTO staff (`name`, `date1`) VALUES('$name','$date1')")) { 
    header("Location: http://newpageafterdataentry.com"); 
    die(); 
  } else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
  } 
  mysqli_close($conn);
?>

【讨论】:

  • 效果很好!非常感谢我是 SQL 新手,我不确定日期是如何存储的!
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 2013-08-12
  • 1970-01-01
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多