2014-01-19 52 views
0

我做了一个函数,它必须过滤数据传递给$_GET变量。它最近工作,但我开始与mysqli一起工作,现在它不再。每次通过PHP函数回应我的$data都会导致mysqli_real_escape_string导致变量$data返回空。但是我在这里做错了什么。mysqli_real_escape_string返回空函数

我的函数应该自己过滤$_GET变数,但mysqli_real_escape_string返回一个空的变量...

function filter($data) { 
      global $link; 
      $data = trim(htmlentities(strip_tags($data))); 
      if (get_magic_quotes_gpc()) 
       $data = stripslashes($data); 
      $data = mysqli_real_escape_string($link, $data);  
      return $data; 
     } 

为了运行所有$_GET变量槽过滤器上的循环。

foreach($_GET as $key => $value) { 
    $get[$key] = filter($value); 
} 

与数据库的连接(连接不工作):($link

$link=mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME); 
+3

由于[PHP中的变量作用域](http://php.net/manual/en/language.variables.scope.php),函数内部没有'$ link' – kero

+0

我使用'global $ link;'和STI我不工作。也试过'$ GLOBALS ['link'];'但是说索引链接是未知的... –

+0

在这里使用'globals'是什么原因?你跟随什么?请解释这种方法。 – voodoo417

回答

0

修改你的功能,包括$link和按引用传递它,如果你喜欢:

function filter($data, &$link) { 
    $data = trim(htmlentities(strip_tags($data))); 
    if (get_magic_quotes_gpc()) 
     $data = stripslashes($data); 
    $data = mysqli_real_escape_string($link, $data);  
    return $data; 
}