时间()不适用于PDO

时间:2014-03-04 06:41:00

标签: php date pdo

我一直试图让这段代码工作大约半个小时,对于我的生活,我做不到。我已经能够回应时间,但是当我尝试将它实现到我的PHP解析器中时,它只返回所有0的。我尝试了很多不同的方法,但代码只反映了我尝试过的一种方式。

    date_default_timezone_set('America/Los_Angeles');
    $date = date("m/d/Y h:i:s a", time());
    $dbh = new PDO('mysql:host=localhost;dbname=x', 'x', 'x');
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $dbh->prepare("INSERT INTO zzz (x, x1, x2, reply_date) VALUES (:x, :x1, :x2, :date1)");
    $stmt->bindParam(':x', $_POST['yyy']);
    $stmt->bindParam(':x1', $_POST['qqq']);
    $stmt->bindParam(':x2', $_POST['ppp']);
    $stmt->bindParam(':date1', $date);
    $stmt->execute();

1 个答案:

答案 0 :(得分:1)

如果您的reply_date列是日期时间列,则必须确保传递的日期位于a format recognizable by your database。否则它会插入00:00:00的日期。

但是如果你打算插入当前时间,只需从

更改插入内容
INSERT INTO zzz (x, x1, x2, reply_date) VALUES (:x, :x1, :x2, :date1)

INSERT INTO zzz (x, x1, x2, reply_date) VALUES (:x, :x1, :x2, NOW())

这将照顾它。然后,当您从数据库中获取时,可以轻松地将此日期格式化为PHP中所需的任何日期,例如

$dt = new DateTime($row['date']); 
echo $dt->format('m/d/Y h:i:s a') 

或程序方式:

echo date('m/d/Y h:i:s a', strtotime($row['date']);

如果你需要一个时区,请查看: