如何连接函数内的数据库? ......我目前这样做:
基本连接到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;
}
这对我来说似乎很愚蠢,因为我不得不两次添加主机,用户和传递详细信息,我希望基本连接以某种方式处理两者
答案 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;
}