这个更新表中注销时间的php脚本正确吗


Is this php script for updating a logout time in a table correct?

我收到此脚本的服务器错误。我假设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;
}

下面是@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

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

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

几件事:

1.)你可以插入MySQL函数NOW(),它将在当前时间输入,而不是在PHP中摆弄date。(记住不要引用NOW()

2.)如果$userID是一个数字(它可能是),那么不要引用它

3 !== "3"

即它不进行类型转换。

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

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

您还应该查看mysqli或PDO。您当前使用的mysql已折旧。

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

使用mysql_real_eescape_string()来转义传递到数据库的数据也是一种很好的做法