插入输入类型文本作为日期到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&nbsp;&nbsp;<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); 
?> 
+1

您可以使用[strtotime](http://php.net/manual/en/function.strtotime.php)函数,但主要问题是您使用文本插入时间。如果我是你,我会改变这一点。 – 2014-10-11 16:34:49

像这样的东西应该工作:

<?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”,如果你点击输入,你会看到一个小日历。