首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我不明白为什么我们在调用这个函数时需要一个论点?

问我不明白为什么我们在调用这个函数时需要一个论点?
EN

Stack Overflow用户
提问于 2020-10-25 15:56:29
回答 1查看 66关注 0票数 0

我正在上一门关于LinkedIn学习的课程,它教我PHP和MySQL。问题在问答部分通常不会得到回应,所以我希望我能在这里找到一些帮助。

在本课程中,我正在制作一个访问MySQL DB的多页面网站.我们刚刚创建了DB,现在开始构建连接到DB的组件。有一个db_credentials.php脚本定义了DB_SERVER DB_USER DB_PASS DB_NAME

然后我还有一个database.php脚本,在这里

代码语言:javascript
复制
<?php

    require_once('db_credentials.php');

    function db_connect() {
        $connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
        return $connection;
    }

    function db_disconnect($connection) {
        if(isset($connection)) {
            mysqli_close($connection);
        }
    }

?>

这一切对我来说都是有意义的。我还有一个名为initialize.php的脚本,它包含在我的标题中,因此网站的每一页都是如此。在这个initialize.php脚本中,我们刚刚添加了下面的$db = db_connect(); Ok片段,这也很有意义。这样,我们就可以将$db放在代码中,而不是键入db_connect (我说得对吗?还是有其他原因可以将这个函数赋给这个变量?)

好的,这是我一直在挣扎的部分。在我们的footer.php中,我们包含了关闭DB连接的代码,如果它是打开的,那么我们就不会不必要地使用资源。页脚中的代码是db_disconnect($db);,我只是不明白为什么我们需要$db参数。我们不能通过不带任何参数调用db_disconnect函数来关闭连接吗?

EN

回答 1

Stack Overflow用户

发布于 2020-10-25 16:29:24

问题是,这两种功能都没有任何有用的用途。您应该只在应用程序中创建mysqli对象的一个实例,而不需要关闭它。

您的连接代码也不完整。您需要启用错误报告并设置正确的字符集。正确的mysqli连接代码应该如下所示:

代码语言:javascript
复制
<?php

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

现在,您可以使用require 'db.php';或类似的工具来包含这个文件,也可以使用适当的依赖注入容器。在实际应用程序中,您几乎永远不会看到任何类型的include/require。

要关闭的函数是完全多余的。mysqli_close()已经是一个关闭mysqli连接的函数,为什么需要将它封装到另一个函数中呢?此外,正如我已经说过,没有必要关闭连接。PHP将在脚本末尾为您关闭连接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64525724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档