【问题标题】:Data from MySQL and Postgres Databases into Single HTML Table with PHP使用 PHP 将 MySQL 和 Postgres 数据库中的数据转换为单个 HTML 表
【发布时间】:2014-08-19 00:50:56
【问题描述】:

我需要查询一个 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 配对的电子邮件 - 每行一次。

我觉得我在这里做了一些愚蠢的事情,这很容易解决。非常感谢任何帮助。

【问题讨论】:

    标签: php html mysql postgresql


    【解决方案1】:

    在没有看到实际查询的情况下,这是一个远景,但它应该可以帮助您入门。

    首先,从您的 mysql 查询中获取 order_id 和电子邮件,然后将结果存储为关联数组。

    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 解释器假设一些东西。

    【讨论】:

    • 谢谢!提交此文件后,我有片刻的清醒,并让事情以不同的方式工作。至于重复的事​​情......查询实际上并没有这样做,我只是快速清理了半敏感数据并且没有做好它。再次感谢您的指导!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多