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

NOW()MySQLのタイムスタンプとPHPのタイムスタンプの間に不一致が発生したため、timeLogoutをに設定することをお勧めしますが、これは機能するはずです。

mysql_*関数は非推奨になっていることにも注意してください。新しい(そして古い)コードをPHPのPDOまたはMysqliに切り替えることを検討してください。

于 2012-07-30T20:59:20.053 に答える
0

いくつかのこと:

1.)PHPをいじくり回す代わりにdate、MySQL関数NOW()を挿入すると、現時点で入力されます。(引用しないでくださいNOW()

2.)$userIDが数字の場合(おそらくそうです)、引用しないでください。MySQLへ:

3 !== "3"

つまり、型変換は行いません。

したがって、クエリは次のようになります。

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

また、 mysqliまたはPDOのいずれかをチェックアウトする必要があります。現在使用している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 に答える