2010-04-01 49 views
1

我想知道下面的代码是否正确的方式来使用mysqli_real_escape_string()时,将用户数据存储在数据库中。PHP和MySQL - 正确的方式来使用mysqli_real_escape_string

这是PHP的代码&。

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

差不多:你需要把函数调用串外:

"... VALUES ('$user_id', '".mysqli_real_escape_string($url)."')"); 

通知收盘"前和函数调用后的串联.。我们不知道$user_id来自哪里。如果它来自外部,那也需要逃避。

1

否,mysqli_real_escape_string()不会在您的字符串中执行。您需要将其移出到PHP代码:

$eUrl = mysqli_real_escape_string($url); 
mysqli_query($mysqli, "INSERT ... VALUES ('$eUrl')"); 

但我(以及我敢肯定,在这里等)会认为,PDO和变量绑定是“正确”的方式来逃避这种现代的东西世界。