PHP MySQL的插入日期格式(PHP mysql insert date format)

2019-06-17 21:23发布

使用jQuery日期选择器的日期选择器的格式Im为这个08/25/2012

插入到我的数据库时,我有错误,它只能插入0000-00-00 00 00 00

我的代码是

<?php
$id = $_POST['id'];
$name = $_POST['name'];
$date = $_POST['date'];
$sql = mysql_query( "INSERT INTO user_date VALUE( '', '$name', '$date')" ) or die ( mysql_error() );
echo 'insert successful';
?>

我确定我的插入是正确的....

Answer 1:

由于在规定的日期和时间文字 :

MySQL的确认DATE在这些格式值:

  • 如在一个字符串'YYYY-MM-DD''YY-MM-DD'格式。 A“宽松的”语法被允许:任何标点字符可以被用作日期部分之间的分隔符。 例如, '2012-12-31' '2012/12/31' '2012^12^31''2012@12@31'是等同的。

  • 如同在任何没有分隔符的字符串'YYYYMMDD''YYMMDD'格式,只要该字符串是有意义的日期。 例如, '20070523''070523'被解释为'2007-05-23' ,但'071332'是不合法的(它有无意义的月和日),成为'0000-00-00'

  • 如在一个数字YYYYMMDDYYMMDD格式,只要该数是有意义的日期。 例如, 19830905830905被解释为'1983-09-05'

因此,字符串'08/25/2012'不是一个有效的MySQL日期文字。 您有四个选项(按优先一些模糊的秩序,没有你的要求任何进一步的信息):

  1. 配置日期选择器提供在使用支持的格式日期altField连同其altFormat选项 :

     <input type="hidden" id="actualDate" name="actualDate"/> 
     $( "selector" ).datepicker({ altField : "#actualDate" altFormat: "yyyy-mm-dd" }); 

    或者,如果你很高兴为用户看到日期YYYY-MM-DD格式,只需将dateFormat选项 ,而不是:

     $( "selector" ).datepicker({ dateFormat: "yyyy-mm-dd" }); 
  2. 使用MySQL的STR_TO_DATE()函数将字符串转换:

     INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y')) 
  3. 从转换的jQuery接收到的东西,PHP懂得作为一个日期,如一个字符串DateTime对象:

     $dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']); 

    然后或者:

    • 获得合适的格式化的字符串:

       $date = $dt->format('Ym-d'); 
    • 获得UNIX时间戳:

       $timestamp = $dt->getTimestamp(); 

      然后将其直接传递给MySQL的FROM_UNIXTIME()函数:

       INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp)) 
  4. 手动操纵串入一个有效的文字:

     $parts = explode('/', $_POST['date']); $date = "$parts[2]-$parts[0]-$parts[1]"; 

警告

  1. 您的代码很容易受到SQL注入。真的应该使用预处理语句 ,你通过你的变量为不得到SQL评估参数成。 如果你不知道我在说什么,或者如何解决它,阅读的故事鲍比表 。

  2. 此外,如在规定的出台对PHP手册章mysql_*功能:

    这个扩展不赞成PHP 5.5.0,并且不建议用于编写新的代码,因为它会在将来被移除。 相反,无论是库MySQLi或PDO_MYSQL应使用扩展。 又见MySQL的API概述了进一步的帮助,而选择一个MySQL API。

  3. 你似乎是使用一个DATETIMETIMESTAMP列用于保存日期值; 我建议你考虑使用MySQL的DATE类型来代替。 正如上文中DATEDATETIMETIMESTAMP类型 :

    DATE类型用于与日期部分,但没有时间部分的值。 MySQL的检索并在显示DATE值'YYYY-MM-DD'格式。 支持范围为'1000-01-01''9999-12-31'

    DATETIME类型用于同时包含日期和时间部分的值。 MySQL的检索和显示DATETIME中值'YYYY-MM-DD HH:MM:SS'格式。 支持范围为'1000-01-01 00:00:00''9999-12-31 23:59:59'

    所述TIMESTAMP数据类型用于同时包含日期和时间部分的值。 TIMESTAMP有一系列的'1970-01-01 00:00:01' ,以UTC '2038-01-19 03:14:07' UTC。



Answer 2:

您应该考虑从该日起witk创建时间戳mktime()

例如:

$date = explode('/', $_POST['date']);
$time = mktime(0,0,0,$date[0],$date[1],$date[2]);
$mysqldate = date( 'Y-m-d H:i:s', $time );


Answer 3:

$date_field         = date('Y-m-d',strtotime($_POST['date_field']));
$sql = mysql_query("INSERT INTO user_date (column_name,column_name,column_name) VALUES('',$name,$date_field)") or die (mysql_error());


Answer 4:

你必须确保日期格式为YYYY-MM-DD您的jQuery输出。 我能看到的jQuery返回MM-DD-YYYY,这不是有效的MySQL日期格式 ,这就是为什么它返回一个错误。

将其转换为正确的,你可以这样做:

$dateFormated = split('/', $date);
$date = $dateFormated[2].'-'.$dateFormated[0].'-'.$dateFormated[1];

那么你会得到格式化的日期,这将是有效的MySQL格式,这是YYYY-MM-DD,即2012-08-25

我也建议使用mysql_real_escape_string作为将数据插入到数据库,以防止SQL注入作为一个快速的解决方案或更好地利用PDO和库MySQLi 。

使用你的插入查询mysql_real_escape_string而应是这样的:

$sql = mysql_query( "INSERT INTO user_date VALUE( '', '" .mysql_real_escape_string($name). "', '" .mysql_real_escape_string($date). "'" ) or die ( mysql_error() );


Answer 5:

最简单的方法是

$dateArray = explode('/', $_POST['date']);
$date = $dateArray[2].'-'.$dateArray[0].'-'.$dateArray[1];

$sql = mysql_query("INSERT INTO user_date (column,column,column) VALUES('',$name,$date)") or die (mysql_error());


Answer 6:

使用Get从jQuery日期选择器日期对象

var myDate = $('element').datepicker('getDate')

MySQL的日期必须以正确的格式。 它处理任何时区问题的一种选择是使用moment.js

moment(myDate).format('YYYY-MM-DD HH:mm:ss')


Answer 7:

尝试这样的事情..

echo "The time is " . date("2:50:20");
$d=strtotime("3.00pm july 28 2014");
echo "Created date is " . date("d-m-y h:i:sa",$d);


Answer 8:

首先商店$date=$_POST['your date field name'];

insert into **Your_Table Name** values('$date',**other fields**);

您必须包含日期单科特(”“)

我希望它可以帮助。



文章来源: PHP mysql insert date format