我有这个PHP脚本每小时将数据保存到数据库,我想知道如何在保存数据时添加时间戳。 (另外,我应该把什么作为长度/值放在phpMyAdmin中)我表中的列是:
数字,名称,类型,空,默认
1,时间戳,时间戳,否,CURRENT_TIMESTAMP
2,BTC,float,Yes,NULL
3,USD,float,Yes,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 :(得分:2)
由于您的列默认为CURRENT_TIMESTAMP,因此只需完全删除该字段 - 它将获得默认值
mysqli_query($connection,"INSERT INTO database (BTC, USD) VALUES ('$DVCask', '$DVCround')");
请记住,如果这些是不同的计算机并且时间不同步,那么它将是数据库而不是网络服务器的时间。
答案 1 :(得分: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
答案 2 :(得分:0)
将Timestamp字段设置为 datetime NOT NULL DEFAULT NOW()。这将获得您当前的日期/时间。
此处有更多详情:http://www.w3schools.com/sql/func_now.asp
如果你想使用php synthax,你可以定义一个变量$ timestamp = date('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);
?>
干杯
答案 3 :(得分:0)
如果您将列数据类型定义为CURRENT_TIMESTAMP
,则无需在查询中添加值。
如果您还没有使用,
$timestamp = date('Y-m-d H:i:s');