这个用于更新表中注销时间的PHP脚本是否正确?

时间:2012-07-30 20:57:33

标签: php sql

我收到此脚本的服务器错误。我假设SQL没有正确的语法,但我已经尝试了所有我能想到和彻底研究的东西。我确信这只是一个新手,天真的错误,但任何建议都将受到赞赏。

function updateLogout($userID) {
    $success = false;
    //  Get current date-time in MySQL format
    $nowTimeStamp = date("Y-m-d H:i:s");
    $insertLogout_SQL = "UPDATE AccessLog SET";
    $insertLogout_SQL .= " timeLogout='".$nowTimeStamp."'";
    $insertLogout_SQL .= " WHERE userID='".$userID."'";

    if (mysql_query($insertLogout_SQL)) {
        $success = true;
    } else {
        $success = $insertLogout_SQL . "<br />" . mysql_error();
    }
    return $success;
}

4 个答案:

答案 0 :(得分:1)

更好的选择是将timeLogout设置为NOW(),因为我遇到了MySQL的时间戳和PHP的时间戳之间的差异,但是,这应该可行。

还应注意,mysql_*函数已被弃用。考虑将新的(甚至旧的)代码切换到PHP的PDO或Mysqli。

答案 1 :(得分:1)

来自@Matt的回答:

function updateLogout($userID) {
    $success;
    $insertLogout_SQL = "UPDATE `AccessLog` SET `timeLogout`= NOW() WHERE userID = '$userID'";

    if (mysql_query($insertLogout_SQL))
        $success = true;
    else
        $success = $insertLogout_SQL . "<br />" . mysql_error();
    return $success;
}

此外,您应该使用mysqli_query

答案 2 :(得分:0)

有几件事:

1。)不要在PHP中弄乱date,而是插入MySQL函数NOW(),它将在当前时间输入。 (切记不引用NOW()

2。)如果$userID是一个数字(它可能是),那么就不要引用它。到MySQL:

3 !== "3"

即,它不进行类型转换。

因此,您的查询应如下所示:

UPDATE `AccessLog` SET timeLogout=NOW() WHERE userID=$userID

您还应该查看mysqliPDO。您当前使用的mysql是depreciated

答案 3 :(得分:0)

function updateLogout($userID)
{
    $query = "UPDATE AccessLog SET timeLogout=NOW() WHERE userID=$userID";
    if (mysql_query($query))
    {
        return TRUE;

    } else
    {
        return FALSE;
    }
}

使用mysql_real_escape_string()

转义传递给数据库的数据也是一种很好的做法。