我想知道在将用户数据存储到数据库中时,下面的代码是否是使用mysqli_real_escape_string()
的正确方法。
这是PHP& MySQL代码。
if (mysqli_num_rows($dbc) == 0) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$dbc = mysqli_query($mysqli,"INSERT INTO info (user_id, url)
VALUES ('$user_id', 'mysqli_real_escape_string($url)')");
}
if ($dbc == TRUE) {
$dbc = mysqli_query($mysqli,"UPDATE info
SET url = 'mysqli_real_escape_string($url)'
WHERE user_id = '$user_id'");
答案 0 :(得分:1)
不,mysqli_real_escape_string()
未在您的字符串中执行。您需要将其移到PHP代码中:
$eUrl = mysqli_real_escape_string($url);
mysqli_query($mysqli, "INSERT ... VALUES ('$eUrl')");
但我(并且,我相信,其他人在这里)会争辩说PDO和变量绑定是在现代世界中逃避事物的“正确”方法。
答案 1 :(得分:0)
几乎:你需要将函数调用放在字符串之外:
"... VALUES ('$user_id', '".mysqli_real_escape_string($url)."')");
注意函数调用之前和之后的结束"
和连接.
。
而且,我们不知道$user_id
来自哪里。如果它来自外部,那也需要逃脱。