PHP:是否可以使用返回 mysqli_connect() 的函数创建 MySQL 连接?

PHP: Is it possible to create a MySQL connection with a function returning mysqli_connect()?

我想做的是使用 returns(或者我希望它会)mysqli_result 的随机函数创建到 MySQL 数据库的连接。不幸的是它不起作用。它 return 是布尔值。 函数:

function itsName()
{
    $host="localhost";
    $user="root";
    $password="";
    $database="";

    return mysqli_connect($host,$user,$password,$database);
}

当我尝试创建连接并在查询中使用它时:

$con = itsName();

$query = mysqli_query($con, "ANY QUERY");
$fetch = mysqli_fetch_assoc($query);

任何普通查询都不会响应错误,但是当我尝试将其提取到 assoc 数组时,会出现以下错误:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\site\site.php on line X

很明显 itsName 函数 return 是布尔值而不是 mysqli_result。

我的问题是,是否有可能实现我在这里尝试做的事情?使我的函数 return 成为 mysqli_result 而不是布尔值。 如果是这样,请帮助我了解代码的外观。

请不要问我为什么要尝试做这样的事情。只是一个实验。

我想你要找的是这样的:

function Connect($hostName = null, $username = null, $password = null, $dbName = null, $port = null, $socket = null, $flags = null)
{
    $link = mysqli_init();
    $link->real_connect($hostName, $username, $password, $dbName, $port, $socket, $flags)
        or die("Failed to connect to the server");
    return $link;
}

$link = Connect("localhost", "username", "password", "db_name");
$link->query("SELECT * FROM `table` WHERE 1;");

您也可以使用 real_connect 来确定 return:

return $link->real_connect($hostName, $username, $password, $dbName, $port, $socket, $flags) ? $link : false;

然后有:

$link = Connect("localhost", "username", "password", "db_name");
if (!$link)
    die("Failed to connect to the server");

但老实说,我不明白你为什么要包装它?

注意这使用 OOP 方法而不是您在问题中使用的实用版本。

编辑

你得到布尔值的原因是因为 mysqli_connectreal_connect 都是 return boolean 类型,这意味着你必须创建一个 link 某种形式,然后 return 它就像我在我的 Connect 函数示例中那样。

重要!另外,使用mysqli_init时,需要保证后面的第一个mysqli函数是real_connect,否则会报异常.