Php 什么是在mysql查询中转义$\u会话用户名的正确方法?
我正在使用存储的$\u会话用户名:Php 什么是在mysql查询中转义$\u会话用户名的正确方法?,php,mysql,Php,Mysql,我正在使用存储的$\u会话用户名: $usernameunesc = htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8'); 并按如下方式对变量进行转义: $username = mysqli_real_escape_string($link, $usernameunesc); 然后使用它执行以下查询: $query = mysqli_query($link, "SELECT id FROM users WHERE username
$usernameunesc = htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8');
并按如下方式对变量进行转义:
$username = mysqli_real_escape_string($link, $usernameunesc);
然后使用它执行以下查询:
$query = mysqli_query($link, "SELECT id FROM users WHERE username = '".$username."'");
最后一个查询返回
1111
如果我从查询中删除
$username
,并将其更改为“demo”(即用户名的实际名称),则查询将成功返回id 12,但使用$username
变量无效。我是不是没能很好地摆脱这根绳子?有更好的方法吗?顺便说一句,我也可以在SQL命令行中执行查询,它工作得很好,因此我知道查询不是问题所在。当您使用mysqli时,我建议您使用一条准备好的语句-它将自动转义变量
if ($stmt = $mysqli->prepare("SELECT id FROM users WHERE username =?")) {
/* bind parameters for markers */
$stmt->bind_param("s", $usernameunesc);
/* execute query */
$stmt->execute();
}
完整的例子就在这里是的,有,读这篇文章:我认为你的引用是错误的。尝试进行查询
“从用户名为“$username”的用户中选择id”