php - 多数据库连接功能

标签 php mysql function database-connection

<分区>

所以我对 PHP 还很陌生,几乎没有问题。所以我有一个包含标题页和功能页的主索引页。在索引页面的正文中,我调用了几个函数。

在我的 header 包含中,我有我的数据库连接,它与索引页一起加载。在我的每个函数中,我都没有调用新的数据库连接,因为我认为标题中的数据库连接在我的函数运行时会保持打开状态。好吧,即使在 header 中打开了数据库连接,但在调用需要数据库访问的函数时,我收到一条错误消息(数据库连接失败)。

所以我为我的每个函数添加了一个数据库连接,它工作正常。我的问题是,当页面通过标题加载时,我正在打开一个数据库连接。然后我在调用每个函数时打开另一个连接,这可能是此页面上的 3-5 个数据库连接调用。

这对我来说似乎效率不高。这是正确的方法(在每个函数中调用一个连接)还是有一个解决方案/最佳实践,这样我每页只打开一个数据库连接,而不管调用的函数数量如何?同样,当我从函数本身删除连接时,我失败了。我的连接函数如下所示:

function wm_connectToDatabase () {
    $dbhost = "xxx";
    $dbuser = "xxx";
    $dbpass = "xxx";
    $dbname = "xxx";
    $dbconnection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    if(mysqli_connect_errno()){
        die("Connection Failed: ". mysqli_connect_error() ."(". mysqli_connect_errno() .")");
    } else {
        echo "</br>Connection Success</br>";
    }
    return $dbconnection;
} 

所以我的标题在索引加载时调用这个函数。然后我的每个函数都像这样再次调用它:

function fctn1($table){
    $db = wm_connectToDatabase ();
    ...function stuff here...
}
function fctn2($table){
    $db = wm_connectToDatabase ();
    ...function stuff here...
}

最初我假设标题连接足以满足所有功能,只要在标题中有连接的页面上调用函数即可,但我发现情况并非如此。我的函数只有在我在每个函数中也打开另一个连接时才有效。我不确定为什么页眉中的初始连接不会对页面正文中的功能保持打开状态?感谢您的任何帮助。

同样,当我从函数中删除数据库连接时,函数“失败”,就好像没有数据库连接一样,即使我在 header 中调用了连接。谢谢。

最佳答案

您的连接没有保持,因为 $dbconnection 变量没有传递给您的其他函数。

你需要在你的标题中做这样的事情:

$db = wm_connectToDatabase ();

然后在您的其他函数中,修改它们以便它们采用您已经建立的数据库连接:

fctn1($table, $db);

你也可以像这样使用全局变量:

function fctn1($table){
     global $db;
}

关于php - 多数据库连接功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43875772/

相关文章:

sql - 错误 : ORA-00955: name is already used by an existing object in Oracle Function

php - artisan 迁移错误 “Class ' Doctrine\\DBAL\\Driver\\PDOMySql\\Driver' not found”

php - 在 WooCommerce Checkout 自定义文本字段中启用日期选择器

php - php json_encode 和 AJAX 是否破坏了我的数组?

php - 以编程方式创建 magento 订单中的 Paypal 发布错误

php - PDO 错误 : fetchColumn() VS count()

php - 带有 DISTINCT 关键字的 MySQL 查询

mysql - MySQL中的复合主键问题

python - 为什么有些功能pass了

c++ - const 双指针参数的非常量指针参数