如何使用PHP将日期存储到MySQL数据库中?

3

我想在MySQL数据库中存储一个日期值。

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

现在在b.php中,我收集这些值并需要将它们存储在我的数据库中。

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

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

5个回答

8

MySQL日期字段采用“yyyy-mm-dd”格式,因此请将其存储为字符串。从PHP传递时,请包括破折号。


2
你可以直接传递一个字符串:
$sql = 'insert into tbl (dob) values 
        (\'' . $month . '/' . $day . '/' . $year . '\')';

MySQL会为您执行正确的转换,因此您甚至无需担心它。
请确保对所有变量执行了{{link1:mysql_real_escape_string}}以防止SQL注入。

MySQL如何知道它是在mm/dd/yyyy还是dd/mm/yyyy格式中。 - andho
@andho: 它非常聪明。它使用 mm/dd/yyyy 而不是 dd/mm/yyyy 作为格式。 - Eric

1

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

1
最好将其存储为UNIX时间戳在数据库中,因为它是跨平台的。
mktime()

然后,当你从数据库中检索它时,使用

date()

将其转换为您想要的任何格式(例如2009年10月31日;10/31/2009等)


1

太长了。简单点:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接