0

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

4 回答 4

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.

于 2012-07-30T21:03:01.133 回答
1

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

还应该注意的是,mysql_*功能正在被弃用。考虑将新(甚至旧)代码切换到 PHP 的 PDO 或 Mysqli。

于 2012-07-30T20:59:20.053 回答
0

几件事:

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

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

3 !== "3"

即,它不进行类型转换。

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

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

您还应该检查mysqliPDO。您当前使用的 mysql 已折旧

于 2012-07-30T21:01:18.823 回答
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() 转义传递给数据库的数据也是一个好习惯

于 2012-07-30T21:04:50.487 回答