我在使用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"因为每次遇到这个功能。
我很困惑,因为一切似乎都是正确的,但我无法找到解决此错误的方法。我在这里做错了吗?或者它是否在此代码之外导致问题?
答案 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