我有一个共享的用户凭据两个数据库。 我正在使用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