如何用PHP在phpMyAdmin中同时连接多个数据库?附现有连接场景
PHP同时连接多个数据库的实现方法
首先得澄清一下:phpMyAdmin是用来可视化管理MySQL数据库的网页工具,你要实现的应该是用PHP代码同时连接并操作多个MySQL数据库对吧?答案是肯定的,PHP完全支持同时创建多个数据库连接,不管这些数据库在同一台服务器还是不同服务器上,都有对应的实现方式,下面结合你的场景来具体讲解:
情况1:连接同一MySQL服务器下的多个数据库
你目前是连接单个criminal_circum数据库,要是其他数据库和它在同一台服务器上,有两种常用方式:
方式1:单个连接切换数据库
这种方式只创建一个数据库连接,通过切换数据库来操作不同的库,适合不需要同时操作多个库的场景,能节省连接资源:
// 原来连接单个数据库的代码 $database_name = 'criminal_circum'; $conn = mysqli_connect('localhost', '你的用户名', '你的密码', $database_name); // 现在要切换到另一个数据库,比如叫user_management mysqli_select_db($conn, 'user_management'); // 此时执行的SQL都会针对user_management库 $user_query = "SELECT * FROM users"; $user_result = mysqli_query($conn, $user_query); // 切回原来的criminal_circum库继续操作 mysqli_select_db($conn, $database_name); $case_query = "SELECT * FROM cases"; $case_result = mysqli_query($conn, $case_query);
方式2:创建多个独立连接实例
如果需要同时操作多个数据库(比如一边查案件数据,一边查用户数据),直接创建多个独立的连接更清晰,互相不会干扰:
// 连接第一个数据库criminal_circum $conn_criminal = mysqli_connect('localhost', '你的用户名', '你的密码', 'criminal_circum'); // 连接第二个数据库(比如user_management) $conn_user = mysqli_connect('localhost', '你的用户名', '你的密码', 'user_management'); // 分别操作不同的数据库 $case_result = mysqli_query($conn_criminal, "SELECT * FROM cases"); $user_result = mysqli_query($conn_user, "SELECT * FROM users"); // 记得用完后分别关闭连接(可选,但推荐) mysqli_close($conn_criminal); mysqli_close($conn_user);
情况2:连接不同MySQL服务器的多个数据库
要是你的多个数据库在不同的服务器上,那就必须创建多个独立连接,每个连接指定对应的服务器地址:
// 连接服务器A的criminal_circum数据库 $conn_serverA = mysqli_connect('服务器A的IP或域名', '服务器A的用户名', '服务器A的密码', 'criminal_circum'); // 连接服务器B的另一个数据库 $conn_serverB = mysqli_connect('服务器B的IP或域名', '服务器B的用户名', '服务器B的密码', '其他数据库名'); // 各自操作对应服务器的数据库 // ... // 关闭连接 mysqli_close($conn_serverA); mysqli_close($conn_serverB);
用PDO扩展实现(可选)
如果你用的是PDO扩展(推荐,更灵活支持多种数据库),实现逻辑类似,通过不同的DSN创建多个PDO实例:
// 连接criminal_circum库 $dsn1 = 'mysql:host=localhost;dbname=criminal_circum;charset=utf8mb4'; $pdo_criminal = new PDO($dsn1, '你的用户名', '你的密码'); // 连接另一个库 $dsn2 = 'mysql:host=localhost;dbname=user_management;charset=utf8mb4'; $pdo_user = new PDO($dsn2, '你的用户名', '你的密码'); // 执行查询 $cases = $pdo_criminal->query("SELECT * FROM cases")->fetchAll(); $users = $pdo_user->query("SELECT * FROM users")->fetchAll();
注意事项
- 确保你使用的数据库账号拥有对应数据库的访问权限
- 脚本结束后PHP会自动关闭连接,但显式关闭是良好的编码习惯
- 如果遇到连接失败,记得用
mysqli_connect_error()或PDO的异常捕获来排查问题
内容的提问来源于stack exchange,提问作者ManharSinh Zala
相关产品推荐
相关产品推荐

