我有一個共享的用戶憑據兩個數據庫。 我正在使用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. PDO有哪些所有獲取模式?
- 5. PDO INSERT - 多個
- 6. MVC多模型和多視圖形式
- 7. PDO結果和枝條模板庫
- 8. 函數PDO查詢和多維數組
- 9. Strtotime和PHP - 格式化PDO查詢?
- 10. PDO多選問題
- 11. MySQL的PDO多選
- 12. PHP和PDO類
- 13. PDO和性能
- 14. PDO和安全
- 15. PDO和MySQL'max_user_connections'
- 16. PDO和rowcount
- 17. PDO LIMIT和OFFSET
- 18. php 5.3.1和PDO
- 19. 實現命令模式和多態性
- 20. 多繼承和單例設計模式
- 21. WCF和多種安全模式
- 22. 使用PDO :: FETCH_PROPS_LATE和__construct()調用的PDO?
- 23. 星型模式建模 - 多到許多
- 24. 遍歷,多對多模式
- 25. PDO和SQL陳述
- 26. PDO和嵌套取
- 27. PHP和PDO問題
- 28. GET和POST在PDO
- 29. PHP PDO :: lastInsertId()和ATTR_PERSISTENT
- 30. PHP和PDO問題
您是否希望一次只有一個數據庫連接處於活動狀態,或者兩個連接都可以同時處於活動狀態? – Mubo 2014-09-18 21:55:09