使用准备好的语句在数据库中插入日期时间 NOW()

S.I*_*.I. 3 php mysql

我试图在用户注册时插入日期但不起作用。当我添加NOW()到查询时它没有插入任何内容。如果我删除它,用户将被添加到数据库中。

这是正常查询

$stmt = $pdo->prepare('INSERT INTO users (username,password,email,active) VALUES (:username, :password, :email, :active');
$stmt->execute(array(
    ':username' => $_POST['username'],
    ':password' => $hashedpassword,
    ':email' => $_POST['email'],
    ':active' => $activasion
));
Run Code Online (Sandbox Code Playgroud)

我已经阅读了其他线程并尝试了这个

$stmt = $pdo->prepare('INSERT INTO users (username,password,email,created,active) VALUES (:username, :password, :email, NOW(), :active');
$stmt->execute(array(
    ':username' => $_POST['username'],
    ':password' => $hashedpassword,
    ':email' => $_POST['email'],
    ':active' => $activasion
));
Run Code Online (Sandbox Code Playgroud)

刚刚添加createdNOW()到查询,但没有将任何东西。

可能是什么问题?

vhu*_*vhu 5

您在要提供给的 SQL 上缺少右括号prepare()

$stmt = $pdo->prepare('INSERT INTO users (username,password,email,created,active) VALUES (:username, :password, :email, NOW(), :active');
Run Code Online (Sandbox Code Playgroud)

它应该是

$stmt = $pdo->prepare('INSERT INTO users (username,password,email,created,active) VALUES (:username, :password, :email, NOW(), :active)');
Run Code Online (Sandbox Code Playgroud)

正如@VincentDecaux 所建议的那样,您的错误检查应该会发现这一点。如果您愿意,请使用以下内容启用例外:

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Run Code Online (Sandbox Code Playgroud)