PHP - mysqli 连接因其中一种方式失败
PHP - mysqli connection fails for one of ways
我是php的新手,有一件事我不太明白。
我的文件 host.php
导入配置和 returns 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)
和
object(mysqli)
host.php
文件包含与上面 $config = ...
完全相同的行,但不是 $connection2
它 returns new mysqli(...)
object.
为什么这两个实例在初始化后 returns 其他值?
谢谢你帮助我理解它:)
要求不能return。您必须在其他文件中设置 $connection1 = new mysqli。
您需要使用 return
到 return 包含文件中的值。否则它只会告诉您文件是否包含在内。
在您的一个文件中创建 mysqli 连接,同时考虑所需的三个步骤。不要添加任何 try-catch 或任何其他噪音。
<?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;
然后在您的其他文件中包含它并分配 return 变量。
<?php
$conn = require_once 'mysqli.php';
现在您可以使用 $conn
来执行您的 SQL 语句。
当然,除非您将其包装在 IIFE 中,否则这样的事情意义不大。对于 3 行代码,它没有区别。您不会用变量污染全局范围。如果你使用 PHP 配置文件并且你想将这些变量保存在一个范围内,那么 IIFE 可能是有意义的。
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;
})();
我是php的新手,有一件事我不太明白。
我的文件 host.php
导入配置和 returns 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)
和
object(mysqli)
host.php
文件包含与上面 $config = ...
完全相同的行,但不是 $connection2
它 returns new mysqli(...)
object.
为什么这两个实例在初始化后 returns 其他值?
谢谢你帮助我理解它:)
要求不能return。您必须在其他文件中设置 $connection1 = new mysqli。
您需要使用 return
到 return 包含文件中的值。否则它只会告诉您文件是否包含在内。
在您的一个文件中创建 mysqli 连接,同时考虑所需的三个步骤。不要添加任何 try-catch 或任何其他噪音。
<?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;
然后在您的其他文件中包含它并分配 return 变量。
<?php
$conn = require_once 'mysqli.php';
现在您可以使用 $conn
来执行您的 SQL 语句。
当然,除非您将其包装在 IIFE 中,否则这样的事情意义不大。对于 3 行代码,它没有区别。您不会用变量污染全局范围。如果你使用 PHP 配置文件并且你想将这些变量保存在一个范围内,那么 IIFE 可能是有意义的。
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;
})();