我想在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