1

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

基本连接到数据库:

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

这对我来说似乎很愚蠢,因为我必须两次添加主机、用户和传递详细信息,我希望基本连接能够以某种方式兼顾两者

4

2 回答 2

4

这是因为范围。在函数内部时,您不会自动访问在全局范围内定义的变量。您可以像这样将变量“导入”到函数的本地范围中:

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;
}
于 2013-07-05T18:04:57.160 回答
1
global $conn = mysqli_connect('localhost', 'root', '', 'foo');

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

if($real == true) {
    global $conn;
    $str  = mysqli_real_escape_string($conn,$str);
  }
  return $str;
}
于 2013-07-05T18:04:11.587 回答