Mysqli_real_escape_string无法识别链接

时间:2016-03-17 17:34:17

标签: php mysqli

我在使用mysqli_real_escape_string清理我的用户输入,然后将其插入我的数据库。我以前使用它没有遇到任何麻烦,但由于某种原因,这次它没有识别我的链接标识符。

//Connect to mysql server
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
if (!$link) {
    die('Failed to connect to server: ' . mysqli_error());
}

//Function to sanitize the values received from the form (prevents SQL injection)
function clean($str) {
    $str = trim($str);
    if (get_magic_quotes_gpc()) {
        $str = stripslashes($str);
    }
    $rtstr = mysqli_real_escape_string($link, $str);
    return $rtstr;
}

出于某种原因,当我尝试通过此文件输入信息时,它会给出错误"未定义的变量:link"然后" mysqli_real_escape_string()期望参数1为mysqli"因为每次遇到这个功能。

我很困惑,因为一切似乎都是正确的,但我无法找到解决此错误的方法。我在这里做错了吗?或者它是否在此代码之外导致问题?

2 个答案:

答案 0 :(得分:1)

您在函数中调用$link但未在函数中定义。 您必须将其作为参数传递或在函数中定义它。

然后,你必须打电话给你的功能。

//Connect to mysql server
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
if (!$link) {
    die('Failed to connect to server: ' . mysqli_error());
}
//Function to sanitize the values received from the form (prevents SQL injection)
function clean($str,$link) {
    $str = trim($str);
    if (get_magic_quotes_gpc()) {
        $str = stripslashes($str);
    }
    $rtstr = mysqli_real_escape_string($link, $str);
    return $rtstr;
}

clean('test',$link);

答案 1 :(得分:0)

只需在您的函数中声明全局$ link。

function clean($str) {
  /* Other code */
  global $link; // Add this
  $rtstr = mysqli_real_escape_string($link, $str);
  return $rtstr;
}

希望这有帮助。

和平!的xD