0

次の関数は、 を取り込んでPHP session_id更新することになっています。そうしないと、ユーザーは 5 分でログアウトされます。

function update_session_id( $session_id = "" )
{
    $stmt = "UPDATE session SET start=NOW() WHERE id='$session_id';";
    $query = mysql_query( $stmt )
        or die( mysql_error() );

    if( $query )
    {
        return true;
    }
    return false;
}

何らかの理由で、を使用しているにもかかわらず、私をPHP返していますが、これらのスラッシュはまったく削除されていないようです。それが私のクエリが機能しない理由です...その関数が呼び出されるコードは非常に単純です:"\"p9bb7t9gmchtvr6scr8hseufm6\""stripslashes()

else if( strcmp( $action, "query" ) == 0 )
    {
        $session_id = stripslashes( $_POST['session_id'] );
        $data = getCustomer();
        update_session_id( $session_id );
        echo json_encode( $session_id );
    }

しかし、なぜ文字列に余分なスラッシュが付けられているのかわかりません。何かご意見は? クエリの例を更新します。

"UPDATE session SET start=NOW() WHERE id='\"p9bb7t9gmchtvr6scr8hseufm6\"';"
4

1 に答える 1

1

ステートメントを生成するための正しいコードは次のとおりです。

$stmt = sprintf("UPDATE session SET start=NOW() WHERE id='%s'", 
    mysql_real_escape_string($session_id)
);

結果のクエリに二重引用符が表示されている場合は、二重引用符がすでに存在していることを意味します。

参照:PDO

于 2012-12-13T02:03:35.477 に答える