我无法在代码中找到登录用户,请你帮我解决一下:
无效的代码:
$result = mysql_query("SELECT * FROM clients WHERE user = '$_SESSION['user']['username']'")
or die(mysql_error());
但它正在努力表明它的想法,在这里:
echo htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');
提前感谢您的帮助。
答案 0 :(得分:1)
这有两个解决方案。第一个是定义一个新变量以包含$_SESSION['user']['username']
值,第二个是将$_SESSION['user']['username']
括在花括号中(有关详细信息,请参阅:Strings - variable parsing)。
解决方案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
functions are deprecated并且您的代码容易受到SQL injection的攻击。您应该考虑使用PDO
或mysqli
预备语句。
答案 1 :(得分:0)
你可以试试这个,请不要再使用mysql函数,这不是一个黑客密码。请尽情享受
$user = htmlentities($_SESSION['user']['username'], ENT_QUOTES, 'UTF-8');
mysql_query("SELECT * FROM clients WHERE user = '".$user."'")
or die(mysql_error());