PDO查询无法使用$ _COOKIE

Sam*_*Sam 0 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>';

}
Run Code Online (Sandbox Code Playgroud)

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

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

Fun*_*ner 5

更改:

('SELECT * FROM users WHERE username ='$username' ')
Run Code Online (Sandbox Code Playgroud)

至:

("SELECT * FROM users WHERE username ='$username' ")
Run Code Online (Sandbox Code Playgroud)

这解释了语法错误.


编辑以增加安全性:

$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>';
Run Code Online (Sandbox Code Playgroud)

  • -1为鼓励SQL注入的答案 (2认同)