我想在MySQL数据库中存储日期值。如何使用PHP在MySQL数据库中存储日期?
我有一个PHP页面调用A.php
有3个输入:d
,m
,y
,其中d = (1 ... 31)
,m =(1 ... 12)
和y = (1970 to 2009)
。
现在在b.php
我收集这个值,我需要存储在我的分贝。
我的数据库有一个名为dob
的字段,它是日期类型。
如何从d
,m
,y
构造一个类型日期变量并将其存储在数据库中?
我想在MySQL数据库中存储日期值。如何使用PHP在MySQL数据库中存储日期?
我有一个PHP页面调用A.php
有3个输入:d
,m
,y
,其中d = (1 ... 31)
,m =(1 ... 12)
和y = (1970 to 2009)
。
现在在b.php
我收集这个值,我需要存储在我的分贝。
我的数据库有一个名为dob
的字段,它是日期类型。
如何从d
,m
,y
构造一个类型日期变量并将其存储在数据库中?
mysql日期字段的格式为'yyyy-mm-dd',因此将其存储为这样,但将其作为字符串从PHP传递,包括破折号。
你可以只传递一个字符串:
$sql = 'insert into tbl (dob) values
(\'' . $month . '/' . $day . '/' . $year . '\')';
MySQL会做正确的转换为你,所以你甚至不必担心它。
确保您已完成mysql_real_escape_string
以防止对所有变量进行SQL注入。
构建日期类型的变量,使用mktime()函数:
$date = mktime(0, 0, 0, $month, $day, $year);
要保存您的$日期在数据库中,日期转换为字符串:
$sql = "INSERT INTO table (dob) VALUES ('" . date('Y-m-d', $date) . "')";
或者,使用mySQLi:
$query = $db->prepare('INSERT INTO table (dob) VALUES (FROM_UNIXTIME(?))');
$query->bind_param('i', $date);
$query->Execute();
最好是将它作为UNIX时间戳存储在db中,因为它是交叉的使用
mktime()
然后平台,当你从数据库中检索,使用
date()
将它转换成任何你想要的格式(例如: 2009年10月31日; 2009/10/31;等等)
太长了。简单地做:
$dt = sprintf("%'04s-%'02s-%'02s",$y,$m,$d);
mysql_query("insert into mytable (dob) values ('$dt')");
如何MySQL的知道,如果它在格式mm/dd/yyyy或DD/MM/YYYY – andho 2009-09-25 13:53:25
@andho:这是邪恶的聪明。那样,它需要'mm/dd/yyyy',而不是'dd/mm/yyyy'作为格式。 – Eric 2009-09-25 13:54:53