更新MySQL数据库中的会话ID - PHP

时间:2012-12-13 01:39:50

标签: php

以下函数应该接受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\"';"

1 个答案:

答案 0 :(得分:1)

生成语句的正确代码是:

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

如果您在结果查询中看到双引号,则表示双引号已存在

另请参阅:PDO