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

时间:2013-07-05 17:57:23

标签: php database function mysqli

如何连接函数内的数据库? ......我目前这样做:

基本连接到db:

$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;
    }

这对我来说似乎很愚蠢,因为我不得不两次添加主机,用户和传递详细信息,我希望基本连接以某种方式处理两者

2 个答案:

答案 0 :(得分:4)

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

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;
}

答案 1 :(得分:1)

global $conn = mysqli_connect('localhost', 'root', '', 'foo');

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

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