Php 从多个数据库执行多个语句
DB 1:Php 从多个数据库执行多个语句,php,mysql,mysqli,prepared-statement,Php,Mysql,Mysqli,Prepared Statement,DB 1: <?php $servername = "localhost"; $dbname = "root"; $dbpassword = ""; $name = "one"; $db_one = new mysqli($servername, $dbname, $dbpassword, $name); if ($db_one->connect_error) { die("We are likely experie
<?php
$servername = "localhost";
$dbname = "root";
$dbpassword = "";
$name = "one";
$db_one = new mysqli($servername, $dbname, $dbpassword, $name);
if ($db_one->connect_error) {
die("We are likely experiencing a heavy traffic load, please come back later!");
}
?>
DB 2:
<?php
$servername = "localhost";
$dbname = "root";
$dbpassword = "";
$name = "two";
$db_one = new two($servername, $dbname, $dbpassword, $name);
if ($db_one->connect_error) {
die("We are likely experiencing a heavy traffic load, please come back later!");
}
?>
<?php require("db.php"); ?>
<?php //Select All Orders
$stmt = $db_one->prepare("SELECT * FROM `one`");
$stmt = $db_one->prepare("SELECT * FROM `one_table2`");
$stmt = $db_two->prepare("SELECT * FROM `two`");
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $one[] = "<tr><td>".$row["fromdbone"]."</td>";
echo $two[] = "<td>".$row["fromdbtwo"]."</td>";
echo $three[] = "<td>".$row["fromdbone_table2"]."</td></tr>";
}
}
$stmt->close();
?>
我的尝试代码:
<?php
$servername = "localhost";
$dbname = "root";
$dbpassword = "";
$name = "two";
$db_one = new two($servername, $dbname, $dbpassword, $name);
if ($db_one->connect_error) {
die("We are likely experiencing a heavy traffic load, please come back later!");
}
?>
<?php require("db.php"); ?>
<?php //Select All Orders
$stmt = $db_one->prepare("SELECT * FROM `one`");
$stmt = $db_one->prepare("SELECT * FROM `one_table2`");
$stmt = $db_two->prepare("SELECT * FROM `two`");
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo $one[] = "<tr><td>".$row["fromdbone"]."</td>";
echo $two[] = "<td>".$row["fromdbtwo"]."</td>";
echo $three[] = "<td>".$row["fromdbone_table2"]."</td></tr>";
}
}
$stmt->close();
?>
大家好,我在这里不知所措,我该如何从不同的表和数据库执行多个查询,以便将它们全部放在一个表中
非常感谢你们的洞察力,我相信你们都比我聪明得多
编辑:或者,如果我要进行多个查询,如何将它们全部放入一个HTML表中
谢谢,几个小时来我一直在想这个问题,希望你能帮我 由于这两个数据库位于同一台服务器(localhost)上,因此不需要为它们使用不同的连接。使用单个连接,并连接所有表。不在默认数据库中的表可以使用数据库前缀进行访问
$stmt = $db_one->prepare("SELECT * FROM one AS o
JOIN one_table2 AS o2 ON o.id = o2.one_id
JOIN two.two AS t ON o.id = t.one_id");
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo $one[] = "<tr><td>".$row["fromdbone"]."</td>";
echo $two[] = "<td>".$row["fromdbtwo"]."</td>";
echo $three[] = "<td>".$row["fromdbone_table2"]."</td></tr>";
}
}
$stmt->close();
$stmt=$db\u one->prepare(“从其中选择*作为o
将一个表2连接为o.id上的o2=o.id上的o2
在o.id=t.1_-id“)上连接2.2作为t;
$stmt->execute();
$result=$stmt->get_result();
而($row=$result->fetch_assoc()){
echo$one[]=“”.$row[“fromdbone”]”;
echo$two[]=“”.$row[“fromdb2”]”;
echo$three[]=“”.$row[“fromdbone_table2”]”;
}
}
$stmt->close();
要使用多个语句,需要绑定参数
$stmt1 = $db_one->prepare("SELECT * FROM `one`");
$stmt2 = $db_one->prepare("SELECT * FROM `one_table2` WHERE one_id = ?");
$stmt3 = $db_two->prepare("SELECT * FROM `two` WHERE one_id = ?");
$stmt2->bind_param("i", $one_id);
$stmt3->bind_param("i", $one_id);
$stmt1->execute();
$result1 = $stmt1->get_result();
while ($row1 = $result1->fetch_assoc();
$one_id = $row['id'];
$stmt2->execute();
$result2 = $stmt2->get_result();
$row2 = $result2->fetch_assoc();
$stmt3->execute();
$result3 = $stmt3->get_result();
$row3 = $result3->fetch_assoc();
echo $one[] = "<tr><td>".$row1["fromdbone"]."</td>";
echo $two[] = "<td>".$row2["fromdbtwo"]."</td>";
echo $three[] = "<td>".$row3["fromdbone_table2"]."</td></tr>";
}
$stmt1->close();
$stmt2->close();
$stmt3->close();
$stmt1=$db_one->prepare(“从`one`中选择*”;
$stmt2=$db_one->prepare(“从`one_table2`中选择*其中one_id=?”;
$stmt3=$db_two->prepare(“从'two'中选择*,其中一个id=?”;
$stmt2->bind_参数(“i”,一个id);
$stmt3->bind_参数(“i”,$one_id);
$stmt1->execute();
$result1=$stmt1->get_result();
而($row1=$result1->fetch_assoc();
$one_id=$row['id'];
$stmt2->execute();
$result2=$stmt2->get_result();
$row2=$result2->fetch_assoc();
$stmt3->execute();
$result3=$stmt3->get_result();
$row3=$result3->fetch_assoc();
echo$one[]=“”.$row1[“fromdbone”]”;
echo$two[]=“”.$row2[“fromdb2”]”;
echo$three[]=”.$row3[“来自Dbone_table2”]。”;
}
$stmt1->close();
$stmt2->close();
$stmt3->close();
什么是$db\u bans
?脚本设置$db\u one
和$db\u two
。您需要将每个准备好的语句分配给不同的变量。否则,您只执行最后一个查询。但您可能应该在单个查询中加入表。很难说您想做什么。@Barmar我现在编辑了它ry,我从我已经在工作的系统中获取了这段代码,并对其进行了更改,使其成为一个示例。您不需要为每个数据库使用不同的连接。您可以通过使用前缀来访问不同数据库中的表:SELECT*from two。two
感谢您的回答,但我讨厌这样做,因为我的可读性问题,我怎么能拥有multiple然后重复上面例子中的结果?谢谢:)好的,我已经添加了这个版本。