PHP-mysqli连接失败的原因之一

PHP-mysqli连接失败的原因之一,php,mysqli,Php,Mysqli,我是php新手,有一点我不太懂。 我的文件host.php导入配置并返回mysqli()的新实例 在另一个php文件中,当我尝试创建新连接时: try { $connection1 = require_once 'host.php'; $config = require_once 'config.php'; $connection2 = new mysqli($config['host'], $config['user'], $config['password'], $

我是php新手,有一点我不太懂。

我的文件
host.php
导入配置并返回
mysqli()的新实例

在另一个
php
文件中,当我尝试创建新连接时:

try {
    $connection1 = require_once 'host.php';

    $config = require_once 'config.php';
    $connection2 = new mysqli($config['host'], $config['user'], $config['password'], $config['database']);
} 
当我扔掉它的时候

var_dump($connection1);
var_dump($connection2);
我上了我的屏幕

bool(true)

host.php
文件包含的行与上面使用
$config=…
编写的行完全相同,但它返回的不是
$connection2
而是
新的mysqli(…)
对象。

为什么这两个实例在初始化后返回其他值?

谢谢你帮我理解它:)

要求不能返回。您必须在其他文件中设置$connection1=new mysqli。

您需要使用
return
从包含的文件中返回值。否则,它只会告诉您是否包含文件

在其中一个文件中,创建mysqli连接,并考虑到所需的三个步骤。不要添加任何“尝试捕捉”或任何其他噪音

<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
$mysqli->set_charset('utf8mb4'); // always set the charset

return $mysqli;

并且
require
返回true,因为它成功地找到并运行了文件,并且与代码本身无关。因此,为了更好地理解,iLife有助于不生成这些变量,只准备它们并返回,而不进行任何声明?这很有意义,因为这种方法对我很有效,但当我在少数文件中使用此
$connection=require\u一次时,就发生了此错误。你的方法是很好的解决方案,我非常喜欢。谢谢你!IIFE只是在局部范围内定义变量的一种方式。是的,这是我所缺少的。这就是为什么我在返回的
bool
中出现此错误的原因,我在全局范围内都遇到了此错误。感谢您的帮助和知识,这对我学习web开发是一个巨大的里程碑。祝福你:)
<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
$mysqli->set_charset('utf8mb4'); // always set the charset

return $mysqli;
<?php

$conn = require_once 'mysqli.php';
return (function () {
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $config = require_once 'config.php';
    $mysqli = new mysqli($config['host'], $config['user'], $config['password'], $config['database']);
    $mysqli->set_charset('utf8mb4'); // always set the charset

    return $mysqli;
})();