我想在MySQL数据库中存储日期值。
我有一个名为A.php
的PHP页面有3个输入:d
,m
,y
,其中d = (1 ... 31)
,m =(1 ... 12)
和y = (1970 to 2009)
。
现在在b.php
我收集了这些值,我需要存储在我的数据库中。
我的数据库有一个名为dob
的字段,它是日期类型。
如何从d
,m
,y
构建日期类型的变量并将其存储在数据库中?
答案 0 :(得分:8)
mysql日期字段采用'yyyy-mm-dd'格式,因此请将其存储,但将其作为PHP中的字符串传递,包括破折号。
答案 1 :(得分:2)
你可以传递一个字符串:
$sql = 'insert into tbl (dob) values
(\'' . $month . '/' . $day . '/' . $year . '\')';
MySQL将为您进行正确的转换,因此您甚至不必担心它。
确保您已完成mysql_real_escape_string
以防止对所有变量进行SQL注入。
答案 2 :(得分:1)
要构造date类型的变量,请使用mktime()函数:
$date = mktime(0, 0, 0, $month, $day, $year);
要将$ date存储在数据库中,请将日期转换为字符串:
$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();
答案 3 :(得分:1)
最好将它作为UNIX时间戳存储在数据库中,因为它是跨平台的
mktime()
然后,当您从数据库中检索它时,请使用
date()
将其转换为您想要的任何格式(例如2009年10月31日; 2009年10月31日;等)
答案 4 :(得分:1)
太久了。只需这样做:
$dt = sprintf("%'04s-%'02s-%'02s",$y,$m,$d);
mysql_query("insert into mytable (dob) values ('$dt')");