我的表单中有两个名为from date
和to date
的字段,两个字段都有输入日期。我在数据库中插入这两个字段,列类型为date。
我的HTML看起来像:
<form class="" action='a.php' method="POST">
<label for="From_date" class="left-text">From Date:</label>
<input type="date" name="from_date" maxlength="" id="fromdate" placeholder="" class="input-xlarge">
<label for="To_date" class="left-text">To Date:</label>
<input type="date" name="to_date" maxlength="" id="todate" placeholder="" class="input-xlarge">
我的php看起来像这样:
<?php error_reporting(E_ALL); ini_set('display_errors', 1);
DEFINE ('DB_USER', 'root');
DEFINE ('DB_PASSWORD', '');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'ads');
$link = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die("could not connect");
$from_date= mysqli_real_escape_string($link,$_POST['from_date']);
$from_date = date("Y-m-d", strtotime($from_date));
$to_date= mysqli_real_escape_string($link,$_POST['to_date']);
$to_date= date("Y-m-d", strtotime($to_date));
在我的插入声明中,我这样做:
$sql = "INSERT INTO airport_data (From_date,To_date) VALUES ('$from_date','$to_date')";
但这会引发我的错误:
无法执行INSERT INTO表(From_date,To_date)VALUES(2015-05-27,2015-05-15)。您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在第1行附近使用#xx; From_date,To_date)VALUES(2015-05-27,2015-05-15)正确的语法
我尝试从表单中更改日期格式:
$to_date = date('Y-m-d', strtotime(str_replace('-','/', $to_date)));
$from_date = date('Y-m-d', strtotime(str_replace('-','/', $from_date)));
但这并没有解决问题。
问题出在哪里,我无法将从表单收到的日期插入我的数据库表中?
答案 0 :(得分:2)
我会做类似的事情:
$from_date = new DateTime($_POST['from_date']);
$to_date = new DateTime($_POST['to_date']);
// Insert the following into the database
$from_date = mysqli_real_escape_string($link, $from_date->format('Y-m-d'));
$to_date = mysqli_real_escape_string($link, $to_date->format('Y-m-d'));
// If you want those slashes
$from_date = mysqli_real_escape_string($link, $from_date->format('Y/m/d'));
$to_date = mysqli_real_escape_string($link, $to_date->format('Y/m/d'));
对于您的查询:
$sql = "INSERT INTO airport_data
(From_date, To_date)
VALUES ('".$from_date."','".$to_date."')
";
以您希望的方式输出日期的简单而优雅的方式。