加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – PDO在一个查询中使用2个数据库连接

发布时间:2020-12-13 17:24:43 所属栏目:PHP教程 来源:网络整理
导读:我有两个不同的数据库(我可以访问它们),它们有一个具有相同结构的表.这是一个叫做事件的表.我想连接到两个数据库并从事件中获取结果,这样我就可以显示日期是否大于或等于今天. $db1 = new PDO('mysql:host='.$db_host1.';dbname='.$db_name1,$db_username1,$
我有两个不同的数据库(我可以访问它们),它们有一个具有相同结构的表.这是一个叫做事件的表.我想连接到两个数据库并从事件中获取结果,这样我就可以显示日期是否大于或等于今天.

$db1 = new PDO('mysql:host='.$db_host1.';dbname='.$db_name1,$db_username1,$db_pass1);
$db2 = new PDO('mysql:host='.$db_host2.';dbname='.$db_name2,$db_username2,$db_pass2);

$db1->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
$db2->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);

$today = date("Y-m-d");
$stmt1 = $db1->query("SELECT * FROM events WHERE event_start >= $today ORDER BY event_start ASC");
$stmt2 = $db2->query("SELECT * FROM events WHERE event_start >= $today ORDER BY event_start ASC");

//this works for only one of the database. in this case $stmt1 which connects to db1
while($row = $stmt1->fetch()) { 
//echo'd data will go here  
}

解决方法

在这里尝试做的最好的方法是创建第三个数组来合并结果,然后使用它.像这样:

$db1 = new PDO('mysql:host='.$db_host1.';dbname='.$db_name1,PDO::ERRMODE_WARNING);

$today = date("Y-m-d");
$query = "SELECT * FROM events WHERE event_start >= $today ORDER BY events ASC";
$stmt1 = $db1->query($query);
$stmt2 = $db2->query($query);

$results = array_merge($stmt1->fetchAll(PDO::FETCH_ASSOC),$stmt2->fetchAll(PDO::FETCH_ASSOC));

// Then sort the new array,perhaps something like this
$events = array();
foreach ($results as $key => $row){
    $events[$key] = $row['events'];
}

array_multisort($key,SORT_ASC,$results);

print_r($results);

我不确定你在活动领域的订购情况;但是,按照相同的标准订购新的$results数组应该相对容易.检查PHP Array Sorting以获得适当的排序算法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读