php中多mysql数据库的使用与管理
我的脚本需要连接到多个数据库。有些部分只需要连接到一个,这很好,但是在某些情况下,我需要在单个脚本执行中对不同的数据库执行查询 目前我正在做这样的事情:php中多mysql数据库的使用与管理,php,mysql,Php,Mysql,我的脚本需要连接到多个数据库。有些部分只需要连接到一个,这很好,但是在某些情况下,我需要在单个脚本执行中对不同的数据库执行查询 目前我正在做这样的事情: function db_connect($which) { if($which == "main") { $maindb = mysqli_connect(HOSTNAME_1, USER, PASSWORD, MAIN_DB); return $maindb; } elseif($which =
function db_connect($which) {
if($which == "main") {
$maindb = mysqli_connect(HOSTNAME_1, USER, PASSWORD, MAIN_DB);
return $maindb;
} elseif($which == "stats") {
$statsdb = mysqli_connect(HOSTNAME_2, USER, PASSWORD, STATS_DB);
return $statsdb;
}
}
$maindb = db_connect("main");
$statsdb = db_connect("stats");
我在一个充满常量的配置文件中维护实际的主机名、用户名、密码和数据库名
然后,我在不同的查询中使用相应的链接
有没有更干净的方法 看起来没问题。另一种方法是使用类mysqli而不是函数来操作对象而不是标识符。很好,不过您应该尽量不要复制代码:
function db_connect($which) {
if($which == "main") {
$host = HOSTNAME_1;
$db = MAIN_DB;
} elseif($which == "stats") {
$host = HOSTNAME_2;
$db = STATS_DB;
} else {
throw new Exception('unknown db');
}
return mysqli_connect($host, USER, PASSWORD, $db);
}
$maindb = db_connect("main");
$statsdb = db_connect("stats");
您可以将数据库配置存储在阵列中并使用它。codeigniter就是这样做的。
如果您不想使用关联数组,而更喜欢使用常量,可以将常量命名为MAIN_HOSTNAME、STATS_HOSTNAME、。。。并使用常量$which_HOSTNAME'作为mysqli_connect的输入。您可以将数据库配置存储在阵列中,并执行mysqli_connect$config[$db]['HOSTNAME']、$config[$db]['user'、…..这就是codeigniter的工作方式。如果$which不是main或stats,您现在将得到一个错误,您还应该修改数据库main_db和stats_db的选择。
function get_database_config(){
$config['main']['hostname'] = "host1";
$config['main']['user'] = "user1";
$config['main']['password'] = "pass1";
$config['main']['database'] = "database1";
$config['stats']['hostname'] = "host2";
$config['stats']['user'] = "user2";
$config['stats']['password'] = "pass2";
$config['stats']['database'] = "database2";
return $config;
}
function db_connect($db)
{
$config = get_database_config();
return mysqli_connect(
$config[$db]['hostname'],
$config[$db]['user'],
$config[$db]['password'],
$config[$db]['database']
);
}