我不知道这是否可能,但我正在尝试为每个用户分配不同的日期,因为这些日期是使用循环输入到数据库中的(我知道这是可能的)。为此,我正在使用 mktime() 构建时间戳,但我的列是 datetime(用于 MySQL ORDERBY timestamp DESC),当然,这两者不会放在一起。
我的代码:
<?php
foreach($arr as $user_uid => $num) {
$i = 1;
while($num > 0) {
$i++;
$t = new DateTime("Y-m-d H:i:s", date(mktime(0, 0, 0, $i, 1, 2012)));
$num--;
}
}
?>
此时返回:0000-00-00 00:00:00。
任何帮助将不胜感激,谢谢!
编辑: 金额已更改,我的代码现在如下所示:
foreach($arr as $user_uid => $num) {
$i = 1;
while($num > 0) {
$i++;
$t = date('Y-m-d H:i:s', mktime(0, 0, 0, $i, 1, 2012));
$num--;
}
$game = "INSERT INTO wd_game_$gid (game_uid,user_uid,lastmove,startcountry,money) VALUES ('$gid','$user_uid',FROM_UNIXTIME('$t'),'$rand_c','$money')";
现在插入:1970-01-01 00:00:00
最佳答案
解决方案 1 - 使用 FROM_UNIXTIME()
在数据库层
您可以在数据库端执行此操作,使用 FROM_UNIXTIME()
函数(参数是 Unix 纪元时间戳,因此这与您的 mktime()
的结果相同)。
解决方案 2 - 修复当前代码
您的代码也不正确,因为您将错误的日期传递给了 DateTime
构造函数(参见 the documentation )。你通过"Y-m-d H:i:s"
而不是 date('Y-m-d H:i:s', mktime(0, 0, 0, $i, 1, 2012))
.您甚至可以放弃使用 DateTime
并坚持使用 date('Y-m-d H:i:s', mktime(0, 0, 0, $i, 1, 2012))
,因为这足以用于您的数据库插入。
关于php - mktime() 到 mysql 日期时间列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9103497/