我需要查询 MySQL 数据库,使用部分结果为 Postgres 数据库编写查询,然后在 HTML 表中显示两个数据集的结果。
我有一个像这样的 MySQL 查询结果
$orderid = array();
while ($row = mysql_fetch_array($qry_result)) {
$orderid[] = $row[order_id];
}
$orderlist = implode(', ', $orderid );
PS:是的,我知道我应该使用 mysqli/PDO。旧习难改。
$query2 = "SELECT
data1,
data2,
total
FROM order_summary os
WHERE os.order_id IN ($orderlist)
LIMIT 25";
所以这有效,虽然没有我想要的那么快,但它有效。 (也欢迎提出更好的处理方法的建议!)
现在,当我尝试显示它时,我正在做这样的事情:
$result2 = pg_query($query2) or die('Query failed: ' . pg_last_error());
while ($rowrs = pg_fetch_array($result2, null, PGSQL_ASSOC)) {
$display_string .= "<tr class='text-center'>";
$display_string .= "<td>$rowrs[data1]</td>";
$display_string .= "<td>$rowrs[data2]</td>";
$display_string .= "<td>\$$rowrs[total]</td>";
$qry_result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($qry_result)){
$display_string .= "<td>$row[email]</td>";}
}
//magical other things unrelated to the table
$display_string .= "</tr>";
$display_string .= "</table>";
echo $display_string
问题是 MySQL 的结果要么显示在 HTML 表中的一行中,要么一遍又一遍地重复。预期结果是电子邮件与 order_id 配对——每行一次。
我觉得我在这里做了一些愚蠢的事情,这是一个很容易解决的问题。非常感谢任何帮助。
最佳答案
在没有看到实际查询的情况下,这是一个不太可能的方案,但它应该可以帮助您入门。
首先,从 mysql 查询中获取 order_id 和 email,然后将结果存储为关联数组。
while($row=mysql_fetch_array($result)) {
$orderid[$row['order_id']] = $row['email'];
}
由于它是关联数组,因此您应该使用以下命令获取订单列表
$orderlist = implode(', ', array_keys($orderid) );
如果您从 postgres 获取订单 ID,则无需再次查询 mysql。相反,只需执行以下操作即可检索电子邮件
$email = $orderid[$rowsrs['order_id']];
$display_string .= "<td>$email</td>";
强制提醒,使用Pdo!!!特别是因为当使用两个引擎时,您实际上会比现在工作一半。
此外,数组键必须加引号。不要让你可怜的 php 解释器做出假设。
关于php - 使用 PHP 将 MySQL 和 Postgres 数据库中的数据放入单个 HTML 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374152/