插入输入类型文本作为日期到MySQL数据库使用php
问题描述:
我想从一个html输入表单插入数据到mysql数据库。在我的html表单中,输入类型是'text',我的mysql数据库类型是'date'。而试图插入数据到我的sql中的相应字段,只能插入空值。请帮忙。我的html脚本和php/mysql插入脚本已附加。插入输入类型文本作为日期到MySQL数据库使用php
HTML
<div class="form-group">
<div class="input-group col-sm-4">
<div class="input-group-addon">Payment Due Date <i class="fa fa-calendar-o"></i></div>
<input id ="duedt" class="form-control" type="text" name ="due_date" required/>
</div>
PHP MySQL代码
<?php
$con=mysqli_connect("localhost","root","[email protected]","ayrilmana");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql= "INSERT INTO dlbcc_purchase (purch_date, purch_amt, purch_dtls,due_date)
VALUES
('$_POST[purch_date]','$_POST[purch_amt]','$_POST[purch_dtls]','$_POST[due_date]')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
//echo "1 record added";
Header("Location: purchase.php");
mysqli_close($con);
?>
答
像这样的东西应该工作:
<?php
//Open MySQL onnection
$sql = "INSERT INTO dlbcc_purchase (purch_date, purch_amt, purch_dtls, due_date) VALUES ('" . $_POST['purch_date'] . "', '" .$_POST['purch_amt'] . "','" . $_POST['purch_dtls'] . "','" . date('Y-m-d', strtotime($_POST['due_date'])) . "')";
if (!mysqli_query($con, $sql)) {
die('Error: ' . mysqli_error($con));
}
//close MySQL connection and other code
?>
请注意的一些事情:
- 你很容易被MySQL注入。见How can I prevent SQL-injection in PHP?。
- 改善你的错误处理,而不是die()或exit()。
- 日期可能错误或为空,因为PHP正在“试图”将其转换为Unix时间戳,然后将其转换回MySQL日期格式。
- 最好的办法是在HTML表单(自HTML5以来)或日期选择器(推荐!)中为此使用类型“日期”。
+0
感谢您的帮助。它按预期工作。我只是编程的初学者,感谢您的支持和建议。 – 2014-10-11 17:48:11
答
在我的网站我有你这样的数据。我使用input type =“data”将它们插入到数据库中,并且我没有问题。插入查询将选择的数据的值无错误^^。 使用type =“data”,如果你点击输入,你会看到一个小日历。
您可以使用[strtotime](http://php.net/manual/en/function.strtotime.php)函数,但主要问题是您使用文本插入时间。如果我是你,我会改变这一点。 – 2014-10-11 16:34:49