PHP:无法在函数中使用全局变量连接mysqli

PHP:无法在函数中使用全局变量连接mysqli,php,function,variables,mysqli,globals,Php,Function,Variables,Mysqli,Globals,我一直在搜索堆栈以得到我的答案,但没有解决我的问题。这是我的照片: $conn = mysqli_connect('localhost', 'username', 'pass', 'db'); function GetArticle() { global $conn; $sql = "sql query"; $getresult = mysqli_query($conn, $sql); .. } 这似乎不起作用。如果我在函数中放入$conn,它可以正常工作 有什么想法吗?我不知

我一直在搜索堆栈以得到我的答案,但没有解决我的问题。这是我的照片:

$conn = mysqli_connect('localhost', 'username', 'pass', 'db');
function GetArticle() {
  global $conn;
  $sql = "sql query";
  $getresult = mysqli_query($conn, $sql);
  ..
}
这似乎不起作用。如果我在函数中放入$conn,它可以正常工作


有什么想法吗?

我不知道您的具体情况,但总的来说,我不认为使用
$conn
作为全局应用有什么好处。您的函数依赖于mysqli连接才能工作,因此只需将连接设为函数参数即可

function GetArticle($conn) {
  $sql = "sql query";
  $getresult = mysqli_query($conn, $sql);
  ..
}
然后,在建立连接后,可以使用连接对象作为参数调用函数

$conn = mysqli_connect('localhost', 'username', 'pass', 'db');
$article = GetArticle($conn);

我认为这是一种比在调用函数之前跟踪
$conn
是否在全局范围内可用更容易管理的方法。

你怎么知道
$conn=
赋值实际上存在于全局范围内?是的,如果你将它放在一个文件中,它应该会工作。嘿,mario,我试着使用一个简单的变量,通过函数返回全局变量,效果很好。只有数据库连接无法使用@abracadver。最好将连接代码放在一个单独的文件中,并将该连接文件包含在将来的文件(连接到数据库)中。尝试使用
mysqli\u connect\u error()
mysqli\u error()
获取错误。可能您在上面某个地方关闭了连接,或者在以前的一些查询中没有使用
mysqli\u free\u result()
。这是因为我将所有函数都放在一个php文件中。但无论如何,我用mysql而不是MySQLI修复了它。我记得有一次在我租的公寓里,我要求管理层修复一扇卧室的门,门挂在一个很小的角度,这使它无法正常关闭,并且在顶角上方留下了一个很大的间隙。维修人员锯掉了门的底角,把它修好了。