首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 同時連線多個 MySQL 資料庫:mysql_query 連線識別符陷阱與解法

     編輯:PHP 綜合知識

錯誤代碼

$conn1 = mysql_connect("127.0.0.1", "root", "root", "db1");
mysql_select_db("db1", $conn1);

$conn2 = mysql_connect("127.0.0.1", "root", "root", "db2");
mysql_select_db("db2", $conn2);

// ❌ 未指定連線識別符,預設用最後開啟的 $conn2
mysql_query("SELECT * FROM ip"); // 實際查 db2.ip 導致錯誤

原因分析

mysql_query($sql, $link) 第二參數為連線識別符。省略時使用最後開啟的連線。

解法一:明確指定連線識別符

$conn1 = mysql_connect("127.0.0.1", "root", "root", "db1");
mysql_select_db("db1", $conn1);

$conn2 = mysql_connect("127.0.0.1", "root", "root", "db2");
mysql_select_db("db2", $conn2);

mysql_query("SELECT * FROM ip", $conn1);    // 明確用 $conn1
mysql_query("SELECT * FROM web", $conn2);   // 明確用 $conn2

解法二:SQL 中指定資料庫

mysql_query("SELECT * FROM db1.ip");   // 省略連線參數
mysql_query("SELECT * FROM db2.web");

現代化建議:mysqli/PDO

// mysqli
$db1 = new mysqli("127.0.0.1", "root", "root", "db1");
$db2 = new mysqli("127.0.0.1", "root", "root", "db2");

$db1->query("SELECT * FROM ip");
$db2->query("SELECT * FROM web");

// PDO
$pdo1 = new PDO("mysql:host=127.0.0.1;dbname=db1", "root", "root");
$pdo2 = new PDO("mysql:host=127.0.0.1;dbname=db2", "root", "root");

⚠️ 重要提醒

mysql_* 函數自 PHP 5.5 棄用,PHP 7.0 移除。新專案請直接使用 mysqli 或 PDO。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved