非法字符串偏移' id'

时间:2014-03-15 16:55:14

标签: php session

我正在我网站上的登录系统中工作而且我被卡住了。 这是我的代码

if(!empty($_SESSION['pseudo']))
    {
        $pseudo = Securise($_SESSION['pseudo']);
        try
        {
            $sql = $DB->query("SELECT * FROM users WHERE pseudo = '".$pseudo."' LIMIT 1");

        }catch (Exception $e){
            die('Error: ' . $e->getMessage());
        }
        $row_count = $sql->rowCount();

        if($row_count > 0)
            {
                $req = $DB->query("SELECT * FROM users WHERE pseudo = '".$pseudo."' LIMIT 1");
                $user = $req->fetchColumn();
                $up = $DB->query("UPDATE users SET last_ip = '".$_SERVER["REMOTE_ADDR"]."' WHERE id = '".$user['id']."'");
            }
            else {
            session_destroy();
            Redirect("".$lien."");
            exit();
            }
    }

我在以下行收到错误

$up = $DB->query("UPDATE users SET last_ip = '".$_SERVER["REMOTE_ADDR"]."' WHERE id = '".$user['id']."'");

我无法弄清楚为什么Php会给我一个 “警告:非法字符串偏移'id”

2 个答案:

答案 0 :(得分:0)

fetchColumn returns a single value,不是数组,所以你不能像关联数组那样访问它。

如果id是您的第一列,则可以使用$user代替$user['id']。请注意,SELECT *通常不是一个好主意,因为如果您依赖某些列的特定顺序,对数据库的更改可能会轻易破坏您的应用程序逻辑。

答案 1 :(得分:0)

更改此行:

$user = $req->fetchColumn();

为:

$user = $req->fetch();

然后您可以通过以下方式获取用户ID:

$user['id']