我正在上一门关于LinkedIn学习的课程,它教我PHP和MySQL。问题在问答部分通常不会得到回应,所以我希望我能在这里找到一些帮助。
在本课程中,我正在制作一个访问MySQL DB的多页面网站.我们刚刚创建了DB,现在开始构建连接到DB的组件。有一个db_credentials.php脚本定义了DB_SERVER DB_USER DB_PASS DB_NAME
然后我还有一个database.php脚本,在这里
<?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函数来关闭连接吗?
发布于 2020-10-25 16:29:24
问题是,这两种功能都没有任何有用的用途。您应该只在应用程序中创建mysqli对象的一个实例,而不需要关闭它。
您的连接代码也不完整。您需要启用错误报告并设置正确的字符集。正确的mysqli连接代码应该如下所示:
<?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将在脚本末尾为您关闭连接。
https://stackoverflow.com/questions/64525724
复制相似问题