Php 非法字符串偏移量';id';
我在我的网站上的登录系统中工作,我被卡住了。 这是我的密码Php 非法字符串偏移量';id';,php,session,Php,Session,我在我的网站上的登录系统中工作,我被卡住了。 这是我的密码 if(!empty($_SESSION['pseudo'])) { $pseudo = Securise($_SESSION['pseudo']); try { $sql = $DB->query("SELECT * FROM users WHERE pseudo = '".$pseudo."' LIMIT 1"); }catch (
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'”,不是数组,因此不能像关联数组一样访问它
如果id
是您的第一列,您可以使用$user
而不是$user['id']
。请注意,SELECT*
通常不是一个好主意,因为如果您依赖于特定列的特定顺序,那么对数据库的更改很容易破坏应用程序逻辑。更改此行:
$user = $req->fetchColumn();
致:
然后,您可以通过以下方式获取用户id:
$user['id']
删除
$user['id']
次要挑剔前后的单引号:您可以基于数字偏移量访问字符串,但它不会满足OP的要求;添加了澄清(“类似于关联数组”)。
$user['id']