2016-09-29 44 views
0

我有一個表和theDate字段結構爲INT(32)。使用PHP插入到mySQL整數字段(INT)的unix時間戳的最佳方法?

編寫PHP腳本我想使用mySQL PDO將unix時間戳作爲整數插入到日期INT表字段中。做這個的最好方式是什麼?我的theDate字段最有效的尺寸是多少? 8,16,32?

代碼:

$theDate = now(); // this returns a 0 in theDate mySQL field 
    $stmt = $db->prepare("INSERT INTO countries(name, capital, language, theDate) VALUES (:country, :capital, :language, :theDate)"); 

$stmt->bindParam(':country', $country, PDO::PARAM_STR, 100); 
$stmt->bindParam(':capital', $capital, PDO::PARAM_STR, 100); 
$stmt->bindParam(':language', $language, PDO::PARAM_STR, 100); 
$stmt->bindParam(':theDate', $theDate); 
if($stmt->execute()) { 
    echo '1 row has been inserted'; 
} 

我用Google搜索這一點,並搜索這個網站..不能找到一個很好的答案

感謝

+1

不要 - 使用適當的'datetime'場代替;當你想按日期檢索任何東西時,它會讓生活變得更容易......但是,在這種情況下,它看起來像你可能想要一個'timestamp'字段......我看不到任何邏輯理由來將日期存儲在*國家*表,除了記錄上次更新記錄的時間。 – CD001

+0

我在@ CD001在這裏。最有效的大小是DATETIME字段,使用本機格式可以訪問大量[附加功能](http://dev.mysql.com/doc/refman/5.7/en/date-and-time -functions.html)以及使它們具有人類可讀性。請確保**將這些時間插入爲UTC **以避免時區問題。在顯示這些值時,您可以在PHP中執行任何時區轉換(如果相關)。 – tadman

回答

2

存儲日期時間信息中的最好方式mysql是使用一個datetime字段。你可以使用你正在嘗試的now()函數。當然,你必須把它調用SQL,而不是PHP:

$sql = "INSERT INTO countries(name, capital, language, theDate) VALUES (?, ?, ?, now())"; 
$stmt = $db->prepare($sql); 
$stmt->execute([$country,$capital,$language]); 

如果你堅持使用不可靠的和過時的UNIX_TIMESTAMP,你必須使用現在unix_timestamp() SQL函數,而不是()。代碼將與上述相同,除了函數名稱。

如果你想爲int值發送到通過PDO數據庫 - 只是把它:

$theDate = time(); 
$sql = "INSERT INTO countries(name, capital, language, theDate) VALUES (?, ?, ?, ?)"; 
$stmt = $db->prepare($sql); 
$stmt->execute([$country,$capital,$language,$theDate]);