Php 什么是在mysql查询中转义$\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

我正在使用存储的$\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 = '".$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”