我有一個共享的用戶憑據兩個數據庫。 我正在使用PDO。這是否意味着我必須創建兩個PDO連接,每個數據庫一個?我查看了文檔,dsn僅代表一個dbname。PDO和多模式
PDO和多模式
回答
是的,你必須設置每個數據庫的連接。
是的,這是不是PDO特定的。無論使用哪種語言,每個MySQL客戶端連接(最多)都可以在一個數據庫上運行。如果您想更改數據庫,則必須使用USE newDatabaseName
。但是這對PDO來說當然沒有意義,所以只需創建兩個連接即可。
編輯:
然而,隨着馬克乙指出的那樣,你可以使用前綴相同的MySQL服務器上引用不同的數據庫。但是,這是不是真的好用,我會想,這可能會導致問題,當你有連接特定的設置(例如,某個字符集,是不是與其他數據庫兼容)。
沒有,你只需要兩個連接,如果您所訪問的數據塊在物理上完全不同的數據庫實例(不同的服務器機器或不同的數據庫副本),或正在使用的兩個數據庫不同的憑據。
您在DSN指定的數據庫名稱僅僅是默認數據庫,但是你可以做平凡
SELECT fieldname FROM schema.table ...
覆蓋該默認值。例如
SELECT fieldname FROM table
是
SELECT fieldname FROM default_specified_in_connection_string.table
當然!我沒有想到明確引用數據庫。好點子。 – lxg 2014-09-18 21:52:05
相當於取決於你所說的 「數據庫」 的意思。有些人使用這個術語來指代一個MySQL實例。每個PDO連接只能引用一個MySQL實例。
但有些人使用術語數據庫作爲「模式」的代名詞。在單個MySQL實例上可以有很多模式,並且您可以使用單個PDO連接來訪問任何模式。使用以下解決方案之一:
- 使用限定表名作爲@MarcB顯示
- 執行語句
USE schema_name
更改默認模式(見我的回答How do I select a MySQL database to use with PDO in PHP?)
另一個例外是,如果您用於連接到MySQL實例的用戶/密碼僅被授予了您要使用的模式之一的權限。然後,您需要重新連接不同的用戶/密碼才能訪問其他模式。
- 1. 結合PDO和DAO模式
- 2. PDO布爾模式
- 3. 定製PDO獲取模式
- 4. 公式html和php/pdo
- 5. 使preg_split和多模式
- 6. PDO複雜的提取模式
- 7. MySQL PDO - 設置默認提取模式?
- 8. PDO有哪些所有獲取模式?
- 9. 分享模式下的INNODB和mysql PDO驅動程序鎖定
- 10. KnockoutJS驗證模板和多模式
- 11. MVC多模型和多視圖形式
- 12. PDO INSERT - 多個
- 13. PDO結果和枝條模板庫
- 14. 函數PDO查詢和多維數組
- 15. PDO :: ATTR_EMULATE_PREPARES(多種綁定和限制)
- 16. PDO ::引用NULL,bools和更多
- 17. PDO,多條語句,和比賽條件
- 18. 使用PDO更新多個列和行
- 19. Strtotime和PHP - 格式化PDO查詢?
- 20. PDO:在PDO多個命令:: MYSQL_ATTR_INIT_COMMAND
- 21. PDO多選問題
- 22. PDO多選查詢
- 23. MySQL的PDO多選
- 24. 搜索多個模式和刪除行,如果模式匹配
- 25. 多模式
- 26. 排列多個EditTexts和TextViews模式
- 27. CSS和JS多圖像模式
- 28. 工廠模式和多態性
- 29. 玩框架和postgresql多模式
- 30. 多繼承和單例設計模式
您是否希望一次只有一個數據庫連接處於活動狀態,或者兩個連接都可以同時處於活動狀態? – Mubo 2014-09-18 21:55:09