如何使用PHP与MySQL基于多配置关联数组建立多数据库连接
多数据库连接实现方案
你的原代码无法正常工作,因为mysqli_connect函数要求每个参数都是单个字符串值,而你直接传入了数组,这会导致参数类型错误,无法建立连接。
要实现多数据库连接,需要遍历配置数组中的每个数据库配置项,逐个创建连接,具体实现如下:
过程式写法
$dbconfig = array( 'servername' => array('localhost','localhost'), 'username' => array('root1','root2'), 'password' => array('p1','p2'), 'db' => array('db1','db2'), ); // 用于存储所有数据库连接的数组 $connections = []; // 获取数据库的数量 $dbTotal = count($dbconfig['db']); for ($i = 0; $i < $dbTotal; $i++) { // 取出对应索引的配置参数,建立连接 $conn = mysqli_connect( $dbconfig['servername'][$i], $dbconfig['username'][$i], $dbconfig['password'][$i], $dbconfig['db'][$i] ); // 检查连接是否成功 if (!$conn) { die("数据库 {$dbconfig['db'][$i]} 连接失败: " . mysqli_connect_error()); } // 将连接存入数组,用数据库名作为键名方便后续调用 $connections[$dbconfig['db'][$i]] = $conn; }
面向对象写法(mysqli OOP)
$dbconfig = array( 'servername' => array('localhost','localhost'), 'username' => array('root1','root2'), 'password' => array('p1','p2'), 'db' => array('db1','db2'), ); $connections = []; $dbTotal = count($dbconfig['db']); for ($i = 0; $i < $dbTotal; $i++) { try { $conn = new mysqli( $dbconfig['servername'][$i], $dbconfig['username'][$i], $dbconfig['password'][$i], $dbconfig['db'][$i] ); if ($conn->connect_error) { throw new Exception("数据库 {$dbconfig['db'][$i]} 连接失败: " . $conn->connect_error); } $connections[$dbconfig['db'][$i]] = $conn; } catch (Exception $e) { echo $e->getMessage() . "<br>"; } }
说明
- 用
$connections数组统一存储所有连接,后续可以通过数据库名(如$connections['db1'])调用对应连接 - 循环中通过索引匹配每个数据库的服务器名、用户名、密码和库名参数
- 加入连接失败的判断逻辑,便于快速定位问题
内容的提问来源于stack exchange,提问作者userfh
相关产品推荐
相关产品推荐

