gpt4 book ai didi

php - 转义 $_SESSION 用户名以便在 mysql 查询中使用的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 13:53:03 25 4
gpt4 key购买 nike

我正在使用存储的 $_SESSION 用户名:

$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();
}

完整示例就在这里http://php.net/manual/en/mysqli.prepare.php

关于php - 转义 $_SESSION 用户名以便在 mysql 查询中使用的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16364418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com