如何在PDO中使用Now()

时间:2017-02-12 19:55:50

标签: php pdo

我很有意思,我应该在查询中使用Now()还是应该为此创建一个数组? 这是我的代码,它正在运行,但对此不确定..

$STH = $DBH->prepare('INSERT INTO users SET username = :username, password = :password, email = :email, joined = NOW(), usergroup = :usergroup, favourite_genre = :genre');
$STH->execute(array(
    ':username' => $username,
    ':password' => $password,
    ':email' => $email,
    ':usergroup' => 0,
    ':genre' => $_POST['genre']
));

3 个答案:

答案 0 :(得分:1)

时间戳是一个时间戳,没有进一步的上下文,产生时间戳的方法几乎没有什么区别。目前,您正在数据库中生成该值,您建议在PHP应用程序中生成该值。

两种方法都会成功生成时间戳。

如果数据库正被其他应用程序使用,可能从其他系统访问,那么根据用例,您可能希望依赖数据库来生成时间戳,以使值在内部保持一致。尽管如此,它仍然需要高度精确才能发挥作用。

现在,如果具有不同位置/文化设置的多个系统正在访问数据库,那么将时间戳创建集中在数据库本身上肯定是个好主意。

答案 1 :(得分:0)

查询不应该采用这种形式吗?

$data = array(
        "email"    => $email,
        "password" => $password,
        "salt"     => $salt,
        "ingame"   => $ingame,
        "kiosk"    => $kiosk,
);
$dbh->query("INSERT INTO ?n SET reg = NOW(), ?u","users", $data);

答案 2 :(得分:0)

日期时间字段不接受默认值,它们不是时间戳字段。

所以我这样做:

<?php

$STH = $DBH->prepare('INSERT INTO users SET username = :username, password = :password, email = :email, joined = :joined, usergroup = :usergroup, favourite_genre = :genre');
$STH->execute(array(
    ':username' => $username,
    ':password' => $password,
    ':email' => $email,
    ':joined' => date ("Y-m-d H:i:s", time());
    ':usergroup' => 0,
    ':genre' => $_POST['genre']
));

?>

见到你我的朋友!