2013-12-10 47 views
1

我有這個php腳本將數據保存到數據庫每小時,我想知道如何在數據保存時添加時間戳。 (還,我應該把在phpMyAdmin的長度/值)在我的表中的列:MySQL在保存數據時添加時間戳

編號,名稱,類型,爲空,則默認

1,時間戳,時間戳,不,CURRENT_TIMESTAMP

2,BTC,浮,是的,NULL

3美元,浮動,是的,NULL

我的腳本:

<?php 
$json_url = "https://crypto-trade.com/api/1/ticker/dvc_btc"; 
$json_data = file_get_contents($json_url); 
$json_feed = json_decode($json_data); 
$DVCdata = $json_feed->data; 
$DVCask = $DVCdata->min_ask; 
$json_url1 = "https://api.bitcoinaverage.com/ticker/USD"; 
$json_data1 = file_get_contents($json_url1); 
$json_feed1 = json_decode($json_data1); 
$BTCask = $json_feed1->ask; 
$DVC_USD = $BTCask * $DVCask; 
$DVCround = round($DVC_USD, 8); 
$connection = mysqli_connect("mysql.serversfree.com",user,pass,database); 

if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

mysqli_query($connection,"INSERT INTO database (Timestamp, BTC, USD) 
VALUES (???, '$DVCask', '$DVCround')"); 

mysqli_close($connection);  
?> 
+0

time()是一個PHP函數 –

回答

2

當你的列缺省值CURRENT_TIMESTAMP的只是拿那場完全 - 它會得到默認值

mysqli_query($connection,"INSERT INTO database (BTC, USD) VALUES ('$DVCask', '$DVCround')"); 

請記住這將是在數據庫而不是web服務器上的時間,如果這些是不同的機器並且時間不同步。

+0

此外,一定要設置列以更新記錄更新時間戳,否則將只在記錄被插入時設置。更多在這裏:http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html – Askanison4

+0

有什麼我需要把長度/值在phpmyadmin中,或者我應該把它留空嗎? – Smeagol

+0

應該可以,因爲它是 - 我不知道phpadmin,但沒有時間戳的長度參數,它已經默認爲您的問題中的CURRENT_TIMESTAMP。 – abasterfield

0

嘗試NOW()

mysqli_query($connection,"INSERT INTO database (Timestamp, BTC, USD) 
VALUES (NOW(), '$DVCask', '$DVCround')"); 

的值將被格式化爲例如:2013-10-12 11時18分02秒。取決於您的字段類型,只會保存日期或日期和時間。爲了僅保存日期,如果您想保留小時,那麼字段類型應該爲DATE,對其他字段使用DATETIME

,因爲它們似乎包含美元值,您可能希望使用小數位字段?請記住,在字段的長度屬性中,您必須輸入兩個數字,第一個是總位數,第二個是逗號後的位數,如5,2

+0

我應該在時間戳和其他列的長度/值中添加什麼?感謝你的回答。 – Smeagol

0

設置時間戳字段as datetime NOT NULL DEFAULT NOW()。這將爲您獲得當前的日期/時間。

更多細節在這裏:http://www.w3schools.com/sql/func_now.asp

如果你想使用synthax可以定義一個變量$ 時間戳=日期的PHP( 'Y-M-d H:I:S');和使用後:

<?php 
$json_url = "https://crypto-trade.com/api/1/ticker/dvc_btc"; 
$json_data = file_get_contents($json_url); 
$json_feed = json_decode($json_data); 
$DVCdata = $json_feed->data; 
$DVCask = $DVCdata->min_ask; 
$json_url1 = "https://api.bitcoinaverage.com/ticker/USD"; 
$json_data1 = file_get_contents($json_url1); 
$json_feed1 = json_decode($json_data1); 
$BTCask = $json_feed1->ask; 
$DVC_USD = $BTCask * $DVCask; 
$DVCround = round($DVC_USD, 8); 
$timestamp = date('Y-m-d H:i:s'); 
$connection = mysqli_connect("mysql.serversfree.com",user,pass,database); 

if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

mysqli_query($connection,"INSERT INTO database (Timestamp, BTC, USD) 
VALUES ('$timestamp', '$DVCask', '$DVCround')"); 

mysqli_close($connection);  
?> 

乾杯

+0

我應該在哪裏設置它?在phpmyadmin或腳本本身? – Smeagol

+0

@Smeagol我爲你更新了整個腳本。複製並粘貼它,它應該工作。我用** php值添加了一個** $ timestamp變量**:date('Ymd H:i:s'); ** 這將起作用,併爲您設置當前日期/時間並將其存儲數據庫。您只需**將phpmyadmin中的「時間戳」字段**更改爲日期時間** –

+0

它給了我一個無效的默認值錯誤(#1067)我該怎麼辦? – Smeagol

0

如果定義您的列數據類型爲CURRENT_TIMESTAMP,那麼就沒有必要在查詢中增加價值。

如果你還沒有再使用,

$timestamp = date('Y-m-d H:i:s');