PHP和MySQL - 使用mysqli_real_escape_string的正确方法

时间:2010-04-01 17:03:38

标签: php mysql

我想知道在将用户数据存储到数据库中时,下面的代码是否是使用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'");

2 个答案:

答案 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来自哪里。如果它来自外部,那也需要逃脱。