我正在我网站上的登录系统中工作而且我被卡住了。 这是我的代码
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”
答案 0 :(得分:0)
fetchColumn
returns a single value,不是数组,所以你不能像关联数组那样访问它。
如果id
是您的第一列,则可以使用$user
代替$user['id']
。请注意,SELECT *
通常不是一个好主意,因为如果您依赖某些列的特定顺序,对数据库的更改可能会轻易破坏您的应用程序逻辑。
答案 1 :(得分:0)
更改此行:
$user = $req->fetchColumn();
为:
$user = $req->fetch();
然后您可以通过以下方式获取用户ID:
$user['id']