与PDO建立新连接时:
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
您似乎必须在DB_DSN中指定数据库,例如
mysql:dbname=mydatabase
但我发现这并不会限制使用此连接的后续查询仅限于此数据库。可以使用DB_USERNAME具有权限的任何其他数据库。它似乎只是指定一个默认值。
它告诉我,有时候,查询不够具体,因此存在访问错误数据库中的表的风险。
我在想我应该创建一个虚拟数据库,建立与该数据库的所有连接,从而强制所有查询明确包含数据库名称。
或者:有没有办法让连接专用于给定的数据库?
这里的最佳做法是什么?
答案 0 :(得分:0)
选项:
SELECT * FROM dbname.tblname
new SQLMapper($databasename,$connection);
之前选择数据库。 query()方法中的mysql_select_db($this->dbname,$this->con)
DOCTRINE
或类似的东西,他们会为你处理在特定情况下使用有用的东西,没有最佳解决方案。
主要是关于你的应用程序中代码的控制程度。
如果遵循规则,那么一切都应该没问题。