gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 22:55:50 24 4
gpt4 key购买 nike

我有 2 个不同的数据库(我可以访问这两个数据库)并且它们有一个具有相同结构的表。这是一个名为 events 的表。我想连接到这两个数据库并从它们的 events 中获取结果,这样我就可以显示日期是否大于或等于今天。

$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,$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");
$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寻找合适的排序算法。

关于php - PDO 在一次查询中使用 2 个数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17434921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com