我正在编写一个应用程序,其中包含一个javascript文件通过Ajax访问的 functions.php 文件。目前我有每个功能连接到数据库,运行查询,然后关闭数据库。我知道必须有一种更有效的方法。我想只输入一次数据库凭据,然后让所有函数使用它。什么是最有效的方法呢?我在这里已经阅读了很多关于这个主题的答案,但它们都是不同的,我迷失了。请指出我正确的方向:)
目前我的职能是像这样打开数据库。
$db = new mysqli("hostname", "username", "password");
$db -> select_db("database name");
或者像这样
mysql_connect("hostname", "username", "password");
mysql_select_db('database name') or die( "Unable to select database");
答案 0 :(得分:1)
简单的答案是连接池。连接池是始终连接到数据库的连接池。您可以为连接数设置高水位线和低水位线。
当您的应用程序从池请求连接时,它将使用其中一个空闲连接并重新使用它。这就是扩展数据库连接的方式。
您正在使用PHP,请查看以下内容:
答案 1 :(得分:0)
您只需检查数据库连接变量是否已设置:
if (!isset($db)) {
$db = new mysqli(...);
$db->select_db("database_name");
}
与mysql_connect
类似(它返回一个连接资源,因此您可以将其分配给变量,即使它是其他函数的可选参数)。
另一种方法是使用带有静态变量的函数:
function connect_db() {
static $db = new mysqli(...);
static $selected = $db->select_db("database_name");
return $db;
}
第三个选项是在脚本开头连接一次数据库,而不是在每个函数中连接。然后将$db
传递给每个函数,或者使用global $db;
访问它。