首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中使用多个数据库名作为mysql查询中的变量

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

Stack Overflow用户
提问于 2014-06-29 07:45:38
回答 2查看 804关注 0票数 1

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

代码语言:javascript
复制
$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");

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-29 07:51:20

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

代码语言:javascript
复制
$db1 = mysql_connect($hostname, $username, $password); 
$db2 = mysql_connect($hostname, $username, $password, true); 

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

然后查询第一个数据库:

代码语言:javascript
复制
mysql_query('select * from tablename', $db1);

查询第二个数据库:

代码语言:javascript
复制
mysql_query('select * from tablename', $db2);

编辑1:我用了这个答案,但似乎找不到答案。

编辑2:找到它:如何连接到单个网页上的多个MySQL数据库?

编辑3:首选方式:

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

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

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

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

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

代码语言:javascript
复制
$result = $db->query("select * from tablename");
foreach ($result as $row) {
  echo $row['foo'] . "\n";
}

或者,如果你有变量:

代码语言:javascript
复制
$stmt = $db->prepare("select * from tablename where id = :id");
$stmt->execute(array(':id' => 42));
$row = $stmt->fetch();

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

代码语言:javascript
复制
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();
}
票数 3
EN

Stack Overflow用户

发布于 2014-06-29 08:05:40

相反,使用PDO对象进行同样的操作。

这是最后一件事情+ mysql_query将被废弃在未来版本的php

代码语言:javascript
复制
 <?php

    /*Function Definition*/

     function getDbConnection($dbName,$qry)
      {
        $db = new PDO('mysql:host=localhost;dbname='.$dbName,'username','password');
        $stmt = $db->query($qry);
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
      }

   /*Call the Function*/

    $resultSet = getDbConnection(database1,$YourQuery);

 ?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24474113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档