Require_once配置.php不适用于函数 php


Require_once config.php not working with function php

我的代码有问题,希望大家能帮助我。

这是我的配置.php

$host = "localhost";
$db_user = "root";
$db_pass = "vertrigo";
$db_name = "DBname";
$mysqli = new mysqli($host, $db_user , $db_pass, $db_name);
mysqli_set_charset($mysqli, 'UTF8');
if ($mysqli->connect_errno) {
  echo "Errno: " . $mysqli->connect_errno . "<br />";
  echo "Error: " . $mysqli->connect_error . "'n";
  exit;
}

我需要它进入索引.php函数库像

require_once("config.php");
require("lib/select.php");

这是我选择的库

function SelectAdmin()
{
    $sql = "SELECT * from admin order by id ASC";
    $result=$mysqli->query($sql);
    return $result; 
}

然后,我在索引中调用它.php

while ($rows = SelectAdmin()->fetch_assoc()) 
{ 
    echo $rows['Fullname'];
}

但它显示错误

未定义的变量:mysqli 在 .... ''lib''select.php 在第 8 行

请帮助我。谢谢!

这是一个经典的范围问题。

您在"主"范围内声明了$mysqli,我们称之为"级别 0",现在您想在 SelectAdmin() 中访问它。但是该方法中没有定义$mysqli变量,因为在该方法中,您处于"级别 1"。

您可以通过将该变量

标记为全局变量来告诉SelectAdmin()在级别 0 使用该变量:global $mysqli

或者更好的是,您可以定义一个Connect()方法,以便在每次需要时建立连接。

因此,在SelectAdmin()中,您将必须调用$mysqli = Connect()并且应该适用于需要连接的每种方法。

$mysqli传递给函数,以便它可以访问$mysqli变量

function SelectAdmin($mysqli) {
    $sql = "SELECT * from admin order by id ASC";
    $result=$mysqli->query($sql);
    return $result; 
}

请尝试以下操作:

function SelectAdmin() {
    global $mysqli;//You need this !
    $sql = "SELECT * from admin order by id ASC";
    $result=$mysqli->query($sql);
    return $result; 
}