php - 如何在php中的mysql查询中使用多个数据库名称作为变量

标签 php mysql

我需要在 php 脚本中编写 2 个 mysql 查询,在这两种情况下,我都希望从同一服务器上的两个不同数据库中获取数据。但是这些数据库名称存储在两个不同的变量中。

$link1 = mysql_connect($hostname_database,$username_database,$password_database);      

$database1 = "android1";
$database2= "android2";


$result1 = mysql_query("Select * from database1.tablename");
$result2 = mysql_query("Select * from database2.tablename");

实现此目标的正确方法是什么?

最佳答案

这就是您连接到两个数据库的方式。您需要在第二个连接中将 true 作为第四个参数发送,否则将使用第一个连接。

$db1 = mysql_connect($hostname, $username, $password); 
$db2 = mysql_connect($hostname, $username, $password, true); 

mysql_select_db('database1', $db1);
mysql_select_db('database2', $db2);

然后查询第一个数据库:

mysql_query('select * from tablename', $db1);

查询第二个数据库:

mysql_query('select * from tablename', $db2);

编辑 1:我从 SO 答案中使用了这个,但似乎找不到那个答案。

编辑 2:找到它:How do you connect to multiple MySQL databases on a single webpage?

编辑 3:首选方式:

如果您使用 PHP5(鉴于 PHP4 已被弃用,您应该使用),您应该使用 PDO ,因为这正在慢慢成为新标准。 PDO 的一个(非常)重要的好处是它支持绑定(bind)参数,这使得代码更加安全。

您将通过 PDO 进行连接,如下所示:

try {
  $db = new PDO('mysql:dbname=databasename;host=127.0.0.1', 'username', 'password');
} catch (PDOException $ex) {
  echo 'Connection failed: ' . $ex->getMessage();
}

(当然要替换上面的数据库名,用户名和密码)

然后您可以像这样查询数据库:

$result = $db->query("select * from tablename");
foreach ($result as $row) {
  echo $row['foo'] . "\n";
}

或者,如果你有变量:

$stmt = $db->prepare("select * from tablename where id = :id");
$stmt->execute(array(':id' => 42));
$row = $stmt->fetch();

如果您需要同时打开多个连接,您可以简单地创建多个 PDO 实例:

try {
  $db1 = new PDO('mysql:dbname=databas1;host=127.0.0.1', 'username', 'password');
  $db2 = new PDO('mysql:dbname=databas2;host=127.0.0.1', 'username', 'password');
} catch (PDOException $ex) {
  echo 'Connection failed: ' . $ex->getMessage();
}

关于php - 如何在php中的mysql查询中使用多个数据库名称作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24474113/

相关文章:

php - SQL查询只选择最大项目?

javascript - javascript 表单提交后的 Onsubmit 事件

php - 使用用户名、密码和所有权限从 PHP 创建 MySQL 数据库

php - 在嵌套循环中使用数组耗尽内存

php - Mysql 使用 php 加入只有 2 个表的问题

php - Zend/Doctrine 无法执行 ORM 操作,表已经存在

php - 使用 $this->db->select(); 时如何在 codeigniter 中禁用反引号;

php - MySQL 重复检查不起作用

从数据库获取信息时出现 PHP 错误

php - 设计良好内容发布系统的资源