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以获得适当的排序算法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |