【问题标题】:Multiple query Output into single Table多个查询输出到单个表中
【发布时间】:2021-10-19 09:39:10
【问题描述】:

这是我当前的代码。我正在尝试将来自两个单独查询的数据显示到具有多列的单个表中。这里有什么问题?我收到以下错误,

警告:C:\xampp\htdocs\report\new2.php 第 58 行中未定义的数组键 71

警告:尝试访问第 58 行 C:\xampp\htdocs\report\new2.php 中 null 类型值的数组偏移量

echo "<td>" . $data['row2'][$i]['Entity_Name'] . "</td>";

在这一行我得到错误。

<?php

$sql = mysqli_query(
  $connection, 
  "SELECT Entity_Name, Count(Sid)
   FROM mq_active_sep21 
   WHERE Plan_Name != 'Complementary_Package'
   GROUP BY Entity_Name
   ORDER BY Entity_Name"
  );

$sql2 = mysqli_query(
  $connection,
 "SELECT Entity_Name, Count(Sid)
 FROM mq_active_sep21
 WHERE Plan_Name = 'Complementary_Package'
 GROUP BY Entity_Name
 ORDER BY Entity_Name"
);


?>
    <html>
    <head>
        <title>Report Details </title>
    </head>
    <body>
    <h1>Report</h1>
    <hr>
    <table border = '2'>
        <tr>
            <th>Entity Name</th>
            <th>Total SID</th>
            <th>Entity Name</th>
            <th>Total SID</th>
        </tr>


        <?php

        $data = array();

        while($row = mysqli_fetch_assoc($sql)) {$data['row'][] = $row;}
        while($row = mysqli_fetch_assoc($sql2))  {$data['row2'][] = $row;}

        $count = count($data['row']);

        for($i=0;$i<$count;$i++)
        {
            echo '<tr>';
            if(($i % 2) == 1)
            {
                echo "<td>" . $data['row2'][$i]['Entity_Name'] . "</td>";
                echo "<td>" . $data['row2'][$i]['Count(Sid)'] . "</td>";
            }else
            {
                echo "<td>" . $data['row'][$i]['Entity_Name'] . "</td>";
                echo "<td>" . $data['row'][$i]['Count(Sid)'] . "</td>";
            }
            echo '</tr>';
        }
        ?>

    </table>

    </body>
    </html>

【问题讨论】:

  • 第 58 行是哪一行?您问题中的代码只有 55 行。
  • 回声“”。 $data['row2'][$i]['Entity_Name'] 。 "";回声“”。 $data['row2'][$i]['Count(Sid)'] 。 "";
  • 最可能的原因是:您将两个不同查询的行放入$data。这些查询之间的行数很可能不同,但您只需要$data['row'] 的长度来循环$data。您可能用完了$data['row2'] 结果,因此$data['row2'][$i]['Entity_Name'] 不存在。
  • 有什么解决问题的建议 $data['row2'] ?

标签: php html mysql


【解决方案1】:

我可以建议您使用单一查询:

SELECT 
    Entity_Name,
    Count(*) Count_All,
    Count(NULLIF(Plan_Name, 'Complementary_Package')) Not_Complementary_Package
FROM mq_active_sep21 
GROUP BY Entity_Name 
ORDER BY Entity_Name;

和类似的代码:

$sql = mysqli_query($connection, "
    SELECT 
        Entity_Name,
        Count(*) Count_All,
        Count(NULLIF(Plan_Name, 'Complementary_Package')) Not_Complementary_Package
    FROM mq_active_sep21 
    GROUP BY Entity_Name 
    ORDER BY Entity_Name;
");

while($row = mysqli_fetch_assoc($sql)) {
    printf(
        "Entity_Name: %s, Total: %d, Complementary_Package: %d " . PHP_EOL, 
        $row['Entity_Name'],
        $row['Count_All'],
        $row['Count_All'] - $row['Not_Complementary_Package']
    );
}

Test PHP & SQL code online

【讨论】:

  • 如果我想计算没有 Complementary_Package 的计划,那么我应该在代码中添加什么?
  • 你能告诉我如果我想从不同的表中添加更多的列那么我应该如何编写代码?
  • 请单独提问。祝你好运!
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2018-11-05
  • 2013-07-31
  • 2021-08-31
相关资源
最近更新 更多