gpt4 book ai didi

php - 连接多个MySQL数据库,连接则加入Array,连接不上则跳过

转载 作者:行者123 更新时间:2023-11-29 00:02:13 24 4
gpt4 key购买 nike

我正在为需要连接到 3 个 mysql 数据库服务器的客户端创建一个工具,每个服务器位于不同的位置。为此,我创建了一个数据库类的 3 个数据库对象(数据库名称、用户名和密码从配置文件中检索)并将它们放在一个数组中:

$db1 = new db('xx.xx.xx.1');
$db2 = new db('xx.xx.xx.2');
$db3 = new db('xx.xx.xx.3');

$dbArray = array($db1, $db2, $db3);

这是创建对象的类的一部分:

public function __construct($dbHost) {
/* Get the path to the dbconfig file */
$this->_configURL = "/path/to/dbconfig/file.ini";

/* Try and connect to the database if it hasn't been done before */
if (!isset($this->_mysqli)) {
/* Load the configuration and put it in an array */
$dbConfig = parse_ini_file($this->_configURL);
$dbUser = $dbConfig["username"];
$dbPass = $dbConfig["password"];
$dbName = $dbConfig["dbname"];

/* Make a new database connection */
$this->_mysqli = new mysqli($dbHost, $dbUser, $dbPass, $dbName);
}
}

我想要完成的是,如果连接是可能的,数据库对象将被添加到一个数组中。如果不是这种情况,请跳过它并尝试连接到数据库 2 和 3。我在程序的其余部分使用数组。

最好的方法是什么?我尝试使用 try catch 语句遍历服务器的 IP 地址。但我无法让它工作。

我的解决方案:感谢 exussum

我可能没有正确解释我的问题,但代码 blow 满足了我的需要。我有一个数组,其中包含 3 个服务器的 IP 地址和一个空数组。一旦创建数据库对象成功,空数组将被填充。我只需要在正确的方向上稍微插入一下就可以完成这项工作,毕竟这很简单......

$tmpArray = array('xx.xx.xx.1', 'xx.xx.xx.2', 'xx.xx.xx.3');
$dbArray = array();

foreach ($tmpArray as $k) {
try {
//making the connection object
$dbConfig = new db($k);

$dbArray[] = $dbConfig;

continue;
} catch (Exception $e) {
// catch the exception
}
}

最佳答案

foreach($dbArray as $k => $dbConfig) {
try {
//making the connection object
continue;
} catch (Exception $e) {
//you have not been able to connect remove it from the array
unset($dbArray[$k]);
}
}

假设你的构造函数被改成有

$this->_mysqli = new mysqli($dbHost, $dbUser, $dbPass, $dbName);  
/* check connection */
if ($this->_mysqli->connect_errno) {
throw new Exception("Cant connect");
}

里面还有

更新:

保持连接的对象

$tmpArray = array('xx.xx.xx.1', 'xx.xx.xx.2', 'xx.xx.xx.3');$dbArray = array();

foreach ($tmpArray as $k) {
try {
//making the connection object
$dbArray[] = new db($k);

} catch (Exception $e) {
// maybe do something to the configs ?
}
}

关于php - 连接多个MySQL数据库,连接则加入Array,连接不上则跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29258792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com