我想插入一行到数据库。所有参赛作品中插入正确,但日期被插入为:日期不插入mysql_query插入
0000-00-00
我试图格式化手动日期:
$updated = $a["updated"][0];
$updated = explode(" ", $updated);
$updated[1] = explode("/", $updated[1]);
$y = date('Y');
$m = $updated[1][1];
$d = $updated[1][0];
$updated = $y . '-' . $m . '-' . $d;
$updated = strtotime($updated);
echo '<pre>'. $updated .'</pre>';
$upd = date('Y-m-d', $updated);
$a["updated"][0] = $updated;
echo '<pre>'. $upd .'</pre>';
这是后续代码var_dump($ A)的输出:
1342134000
2012-07-13
array(3) {
["metal"]=>
string(6) "Silver"
["am"]=>
array(3) {
[0]=>
string(7) "2748.00"
[1]=>
string(8) "1779.220"
[2]=>
string(8) "2253.200"
}
["updated"]=>
array(1) {
[0]=>
int(1342134000)
}
}
我也尝试过使用mysql_date_format,但行根本没有插入:
$updated = mysql_date_format($updated);
这是我的插入查询
mysql_query("INSERT INTO LondonFixes VALUES(null,'" . $a["metal"] . "','AM'," . $a["am"][1] . "," . $a["am"][0] . "," . $a["am"][2] . "," . $a["updated"][0] . ", null)");
这是我的表结构
CREATE TABLE IF NOT EXISTS `LondonFixes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`Metal` varchar(10) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`AmPm` varchar(2) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`GBP` decimal(10,5) NOT NULL,
`USD` decimal(10,5) NOT NULL,
`EUR` decimal(10,5) NOT NULL,
`Updated` date NOT NULL,
`TimeStamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `Entry` (`Metal`,`AmPm`,`Updated`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=229 ;
有可能是一个非常简单的解决方案,这一点,但宽容我请!
您是否尝试过硬连接您的语句的日期,以确保您的查询使用的格式与数据库所期望的格式相同? – andrewsi 2012-07-13 15:31:19
'$ a [“updated] [0]'的值显示为整数unix时间戳值,而不是格式化的日期字符串。要传入整数值,请将其包装在SQL语句中的'FROM_UNIXTIME'中, - 或者通过格式化的日期字符串(看我的回答) – spencer7593 2012-07-13 16:21:19