我无法在代码中获取登录用户,你能帮我弄清楚吗:
不起作用的代码:
$result = mysql_query("SELECT * FROM clients WHERE user = '$_SESSION['user']['username']'")
or die(mysql_error());
但它正在努力展示它的想法,在这里:
echo htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');
提前感谢您的帮助。
对此有两种解决方案。第一种方法是定义一个新变量来包含$_SESSION['user']['username']
值,第二种方法是用大括号将$_SESSION['user']['username']
括起来(有关更多信息,请参阅:Strings-variable语法分析)。
解决方案1
$username = $_SESSION['user']['username'];
mysql_query("SELECT * FROM clients WHERE user = '$username'")
or die(mysql_error());
解决方案2
mysql_query("SELECT * FROM clients WHERE user = '{$_SESSION['user']['username']}'")
or die(mysql_error());
除此之外,如果只访问数组的顶层(例如$_SESSION['username']
而不是$_SESSION['user']['username']
),则可以简单地删除密钥名称周围的引号:
mysql_query("SELECT * FROM clients WHERE user = '$_SESSION[username]'")
or die(mysql_error());
但是,值得指出的是,mysql
函数已被弃用,并且您的代码容易受到SQL注入的攻击。您应该研究使用PDO
或mysqli
准备好的语句。
您可以尝试一下,请避免再使用mysql函数,这不是一个防黑客的代码。Pleae使其
$user = htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');
mysql_query("SELECT * FROM clients WHERE user = '".$user."'")
or die(mysql_error());