2009-09-25 173 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')"); 
相關問題