2009-09-25 104 views
3

我想在MySQL数据库中存储日期值。如何使用PHP在MySQL数据库中存储日期?

我有一个PHP页面调用A.php有3个输入:dmy,其中d = (1 ... 31)m =(1 ... 12)y = (1970 to 2009)

现在在b.php我收集这个值,我需要存储在我的分贝。

我的数据库有一个名为dob的字段,它是日期类型。

如何从d,m,y构造一个类型日期变量并将其存储在数据库中?

回答

8

mysql日期字段的格式为'yyyy-mm-dd',因此将其存储为这样,但将其作为字符串从PHP传递,包括破折号。

2

你可以只传递一个字符串:

$sql = 'insert into tbl (dob) values 
     (\'' . $month . '/' . $day . '/' . $year . '\')'; 

MySQL会做正确的转换为你,所以你甚至不必担心它。

确保您已完成mysql_real_escape_string以防止对所有变量进行SQL注入。

+0

如何MySQL的知道,如果它在格式mm/dd/yyyy或DD/MM/YYYY – andho 2009-09-25 13:53:25

+0

@andho:这是邪恶的聪明。那样,它需要'mm/dd/yyyy',而不是'dd/mm/yyyy'作为格式。 – Eric 2009-09-25 13:54:53

1

构建日期类型的变量,使用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(); 
1

最好是将它作为UNIX时间戳存储在db中,因为它是交叉的使用

mktime() 

然后平台,当你从数据库中检索,使用

date() 

将它转换成任何你想要的格式(例如: 2009年10月31日; 2009/10/31;等等)

1

太长了。简单地做:

$dt = sprintf("%'04s-%'02s-%'02s",$y,$m,$d); 
mysql_query("insert into mytable (dob) values ('$dt')"); 
相关问题