Php PDO查询不使用$\u COOKIE

Php PDO查询不使用$\u COOKIE,php,Php,我有一个带有PDO的登录系统,当用户登录到cookie时,它会存储用户的用户名。 这意味着当他们到达重定向页面时,cookie可以用来获取该用户的更多数据(例如,名字和第二个名字) 这是在index.php文件中设置cookie的代码: $username = $_COOKIE['username']; $query = $handler->query('SELECT * FROM users WHERE username ='$username' '); while($r = $que

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

这是在index.php文件中设置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>';

}
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>';

}
$username=$\u COOKIE['username'];
$query=$handler->query('从username='$username''的用户中选择*);
而($r=$query->fetch(PDO::fetch_OBJ)){
echo$r->firstname,“
”; echo$r->secondname,“
”; }
每次运行代码时,它都会返回以下错误消息:

分析错误:语法错误,第17行的C:\xampp\htdocs\web\home.php中出现意外的“$username”(T_变量)

更改:

('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>';
$username=$\u COOKIE['username'];
$query=$handler->prepare(“从username=:username的用户中选择*);
$query->execute(数组)(
':username'=>$username
));
而($r=$query->fetch(PDO::fetch_OBJ)){
echo$r->firstname,“
”; echo$r->secondname,“
”;
更改:

('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>';
$username=$\u COOKIE['username'];
$query=$handler->prepare(“从username=:username的用户中选择*);
$query->execute(数组)(
':username'=>$username
));
而($r=$query->fetch(PDO::fetch_OBJ)){
echo$r->firstname,“
”; echo$r->secondname,“
”;
虽然您的错误是一个愚蠢的解析错误,但以下是您应该如何正确地执行它

$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>';
}
$stmt=$handler->prepare('SELECT*FROM username=?'的用户);
$stmt->execute([$\u COOKIE['username']]
而($r=$stmt->fetch(PDO::fetch_OBJ)){
echo$r->firstname,“
”; echo$r->secondname,“
”; }

顺便说一句,有了这样的登录系统,每个人都可以用其他人的名字登录

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

$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>';
}
$stmt=$handler->prepare('SELECT*FROM username=?'的用户);
$stmt->execute([$\u COOKIE['username']]
而($r=$stmt->fetch(PDO::fetch_OBJ)){
echo$r->firstname,“
”; echo$r->secondname,“
”; }

顺便说一句,有了这样一个登录系统,每个人都可以用别人的名字登录。哥们,别把它弄得更复杂了。解决问题,带上你的工具出去。你可以在票房拿到票。哦,如果有人否决你,我不是投否决票的类型;这不是我的风格,不像我认识的一些人。哥们,别把事情弄得更复杂了。解决问题,带上你的工具出去。你可以在票房拿你的票。哦,如果有人投你反对票,我不是那种投反对票的人;这不是我的风格,不像我认识的一些人。诸如此类,这是我能收集到的全部。不过,我非常感谢你让我看到你投了反对票,我会尊重你的e OP需要修复,已经完成了。@你的常识是,现在墙纸已经贴好了,不要再找墙上的裂缝了。哦,别跟踪我,如果有必要,我会向你报告的。别惹我。“常识是没有道理的”。仅此而已。@YourCommonSense-我在解决了这个问题后打算添加安全性,因此如果您删除否决票,我们将不胜感激。@Fred ii-谢谢您的编辑,它让我的生活更轻松了一点!@Fred ii-,尤其是评论带上您的工具,离开吧。您可以在票房领取您的票。真是太搞笑了!布拉废话废话,这就是我所能收集到的。不过,我非常感谢你给我看你投了反对票,我会尊重你的。这次行动需要一个解决方案,它已经完成了。@你的常识现在,当已经有墙纸的时候,别再找墙上的裂缝了。哦,别跟踪我了,如果有必要的话,我会向你报告的;别跟我捣乱。“理智没有什么共同点”。仅此而已。@YourCommonSense-我将在修复此问题后添加安全性,因此如果您删除否决票,我们将不胜感激。@Fred ii-谢谢您的编辑,它使我的生活更轻松了一点!@Fred ii-,尤其是评论带上您的工具,离开吧。您可以在票房领取您的票。真是太搞笑了!