如何连接到函数内部的数据库


How do you connect to database inside a function

如何连接到函数内部的数据库。。。我现在做的是:

基本连接到数据库:

$conn = mysqli_connect('localhost', 'root', '', 'foo');
if (mysqli_connect_errno()) {
      printf("Connect failed: %s'n", mysqli_connect_error());
    exit();
}

功能:

在编写函数时,我必须在中再次包含连接查询

    function cleanup($str, $real) {
           if(get_magic_quotes_gpc() == true){
                $str = stripslashes($str);
        }
         $str = htmlspecialchars($str);
   if($real == true) {
       // connection query here again
        $conn = mysqli_connect('localhost', 'root', '', 'foo');
        $str  = mysqli_real_escape_string($conn,$str);
        }
         return $str;
    }

这对我来说似乎很傻,因为我必须添加主机、用户和传递两次详细信息,我希望基本连接能以某种方式同时处理

这是因为作用域。在函数内部时,您不会自动访问全局范围中定义的变量。您可以将变量"导入"到函数的本地作用域中,如下所示:

function cleanup($str, $real) {
    global $conn;
    if(get_magic_quotes_gpc() == true) {
        $str = stripslashes($str);
    }
    $str = htmlspecialchars($str);
    if($real == true) { 
        $str  = mysqli_real_escape_string($conn,$str);
    }
    return $str;
}
global $conn = mysqli_connect('localhost', 'root', '', 'foo');

使数据库的$conn实例全局化,然后任何代码都可以使用它。

if($real == true) {
    global $conn;
    $str  = mysqli_real_escape_string($conn,$str);
  }
  return $str;
}