几个数据库只使用一个$ dbh?

时间:2011-08-03 22:44:34

标签: php mysql pdo

如果您在同一主机上有两个数据库,一个名为博客,另一个名为论坛,那么您似乎只能使用一个数据库句柄访问这两个数据库? (在PDO中)

$ dbh = new PDO(“mysql:host = $ dbHost; dbname = blog ”,$ dbUser,$ dbPassword);

此句柄适用于数据库博客,但如果您编写类似

的内容,您也可以使用$ dbh在论坛上执行操作

选择网站 .tableName.fieldName

我的问题是:

  1. 您是否必须在$ dbh中指定dbname才能省略博客 .tableName.fieldName部分?

  2. 由于我的网站有两个数据库,是否有任何优点或缺点只使用一个数据库句柄,而不是创建两个句柄(显然一个用于博客,一个用于论坛)?可能的性能差异?

  3. 创建数据库句柄是否会占用任何服务器资源?

2 个答案:

答案 0 :(得分:1)

  1. 通常,最好将数据库特定用户保留在您制作的任何应用上。我会尽可能地说它是必要的。这就是在连接中保持数据库名称的原因。 (这背后的原因提示:如果有人以某种方式获得了一个表的dbms密码怎么办?)
  2. 我不是很擅长这一点,但我不认为保留两个独立的数据库是个好主意。就像你的情况一样,你没有使用主从或任何东西。因此,除非您有一些物理限制,否则请将它们组成1个数据库(使用表名前缀以避免名称冲突)
  3. 前一点的原因来自于此。保持一个用户的数据库或某些人甚至保持两个奇怪的,在某种程度上是合理的原因是你应该遵循的安全措施。对于多个用户,您需要建立多个连接,这意味着对于每个页面加载,您将连接到dbms两次!简单的数学2x加载(是的,它吃资源,每一行代码都有)简化它,想到一个男人需要走到杂货店寻求你想要的一切,一次只能得到一件事。如果你给他2个不同的杂货店,这个男人需要2倍的时间和精力去做同样的工作。

答案 1 :(得分:0)

  1. 是的,你可以省略它。或者在运行USE databasename;
  2. 时切换
  3. 使用一个手柄,似乎是浪费两倍的连接。
  4. 是的,因此(2)。