PDO - 插入(INSERT INTO ...)代码不起作用

时间:2012-07-05 07:09:07

标签: php mysql database date pdo

我正在尝试将用户上次登录时的当前日期/时间插入数据库。由于某种原因,这不起作用。
在同一页面上运行的其他插入脚本运行良好,连接正常 我使用相同的语法在整个网站中插入其他内容,所以我没有弄到什么问题 我可以保证在输入密码时正在执行else部分。

这是我正在讨论的一段代码。

if(!$pwVer){ 
     // code to execute if the password is incorrect.
} else {

    $dateT = date("Y-m-d H:i:s");

    $up_date = $con->prepare("INSERT INTO tbl_user_test (user_last_login) VALUES (:l_login)");
    $up_date->bindParam(':l_login', $dateT);

    $up_date->execute();

    validateUser($userid); //sets the session data for this user


    header("Location: cart.php");
    $con = null;
    die();
}

某些背景:

  • 如果密码正确,$ pwVer会返回“true”。
  • `tbl_user_test`和`user_last_login`的编写方式与数据库中的完全相同。

提前致谢!

3 个答案:

答案 0 :(得分:3)

  

我正在尝试将当前日期/时间插入到用户上次登录时的数据库中。由于某种原因,这不起作用。

您的代码中没有可见的错误,因此应该执行它。一个可能的问题可能是PDO处于静默模式,它不会告诉您发生了什么错误或错误。将PDO设置为失败,但出现异常。

此外,您无需自己构建当前日期;您可以使用SQL的NOW()

<?php
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
try {
    $up_date = $con->prepare("INSERT INTO tbl_user_test (user_last_login) VALUES (NOW());");
    $up_date->execute();
}
catch( Exception $e ) {
    echo $e; exit;
}

header("Location: cart.php");
$con = null;
die();

答案 1 :(得分:2)

您是否尝试过NOW()获取当前日期时间?

答案 2 :(得分:2)

一旦检查

$up_date->bindParam(':l_login', $dateT, PDO::PARAM_STR);