PDO查询无法使用$ _COOKIE

时间:2014-04-10 16:07:57

标签: php

我有一个带PDO的登录系统,用于存储人员登录cookie时的用户名。 这意味着当它们到达重定向页面时,cookie可用于获取该用户的更多数据(例如,名字和名字)。

这是在index.php文件中设置cookie的代码:

setcookie('username',$username,time() + (86400 * 7));

这是我想使用Cookie的值获取数据的代码:

$username = $_COOKIE['username'];

$query = $handler->query('SELECT * FROM users WHERE username ='$username' ');
while($r = $query->fetch(PDO::FETCH_OBJ)){
    echo $r->firstname, '<br>';
    echo $r->secondname, '<br>';

}

每次运行代码时,都会返回以下错误消息:

  

解析错误:语法错误,第17行的C:\ xampp \ htdocs \ web \ home.php中的意外'$ username'(T_VARIABLE)

2 个答案:

答案 0 :(得分:5)

变化:

('SELECT * FROM users WHERE username ='$username' ')

为:

("SELECT * FROM users WHERE username ='$username' ")

解释了语法错误。


为增加安全性而编辑:

$username = $_COOKIE['username'];
$query = $handler->prepare(" SELECT * FROM users WHERE username =:username");
$query->execute(array(
    ':username' => $username
));

while($r = $query->fetch(PDO::FETCH_OBJ)){
echo $r->firstname, '<br>';
echo $r->secondname, '<br>';

答案 1 :(得分:1)

虽然你的错误是一个愚蠢的解析错误,但你应该如何做到这一点正确

$stmt = $handler->prepare('SELECT * FROM users WHERE username = ?');
$stmt->execute([$_COOKIE['username']])
while($r = $stmt->fetch(PDO::FETCH_OBJ)){
    echo $r->firstname, '<br>';
    echo $r->secondname, '<br>';
}
顺便说一句,通过这样的登录系统,每个人都可以在其他人的名下登录