0

我在数据库中有 2 个名为 details 的表并报告这两个表都有一个名为 ono(订单号)的公共字段我需要从两个表中检索特定订单号的数据并使用 php 在表中显示该数据。我只能显示单个表中的数据。

代码:

<?php
mysql_connect ("localhost", "root","")  or die (mysql_error());
mysql_select_db ("name");
$term = $_POST['term'];
$sql = mysql_query("select * from details where details.ono='$term'");
while ($row = mysql_fetch_array($sql)){
echo "<fieldset>";
echo "<table width='1400' cellpadding='5' cellspacing='5' border='0'>";
echo "<tr><td>Patient Name: ".$row['details.pname']."</td><td>Order NO:         ".$row['report.labid']."</td></tr>";
echo "<tr><td>Ph no: ".$row['phno']."</td><td>Age: ".$row['age']."</td></tr>";
echo "<tr><td>Ref doc: ".$row['rdoc']."</td><td>Received on: ".$row['Sdate']."</td></tr>";
echo "</table>";
echo "</fieldset>";
}
?>
4

3 回答 3

0

你应该多指定一点你想要什么。

您可以使用 INNER JOIN:

SELECT column1, column2 FROM details INNER JOIN reports ON reports.ono = details.ono AND details.ono='$term'

但是您也可以使用 UNION ALL,这取决于您想要实现的目标。

SELECT column1, column2 FROM details WHERE details.ono='$term'
UNION ALL
SELECT column1, column2 FROM reports WHERE reports .ono='$term'

注意:不要使用 mysql_query,而是使用PDOmysqli

注意 2:尽量避免使用 SELECT *。始终指定要使用的字段。

于 2013-06-17T13:55:57.063 回答
0

select * from details d LEFT JOIN reportr ON r.ono = d.ono where details.ono='$term'

这是一个 LEFT JOIN,基本 SQL,您应该查看文档或阅读一些教程

于 2013-06-17T13:57:56.430 回答
0

使用 mysql 组合来自 2 个表的信息时,您应该使用join 。

在你的情况下,这看起来像:

$sql = mysql_query("SELECT * from details AS detail LEFT JOIN 
report AS report ON (detail.ono = report.ono) where detail.ono='$term'");

一定要使用某物。像 mysqli::escape_string以确保您免受 sql 注入攻击。

于 2013-06-17T13:58:28.240 回答