-1

我在 RGraph 框架上运行折线图,并且我正在使用 SELECT COUNT 语句来表示拒绝、接受、批准等......计算有多少项目被拒绝或接受等,然后将查询数据转储到数组中,但是我正在寻找一种更简单的方法来实现此查询,而不是对每个唯一的行值运行查询,同时考虑是否必须遇到除拒绝、接受等之外的其他列数据......我不会,我的代码似乎不是很有可扩展性。请帮忙

到目前为止,我正在为每个关键字运行一个查询,希望我的代码能解释这一点。

最后一个变量是我提供给 RGRAPH 的变量,它可以正常工作,但是如果我的行数据发生变化,它不是正确的方法,并且不是很可扩展。

 <?php  



    $cxn = mysqli_connect("localhost","root","", "csvimport");

    $query = "SELECT COUNT(*) FROM table_1 WHERE conclusion = 'rejected'";

    $result = mysqli_query($cxn, $query) or die(mysqli_error($cxn));

    $display = mysqli_fetch_array($result);

    $rejected = $display[0];

    //echo $rejected;

    $query = "SELECT COUNT(*) FROM table_1 WHERE conclusion = 
              'accepted'";

    $result = mysqli_query($cxn, $query) or die(mysqli_error($cxn));

    $display = mysqli_fetch_array($result);

    $accepted = $display[0];

    //echo $accepted;


    $query = "SELECT COUNT(*) FROM table_1 WHERE conclusion = '-'";

    $result = mysqli_query($cxn, $query) or die(mysqli_error($cxn));

    $display = mysqli_fetch_array($result);

    $dash = $display[0];

    //echo $dash;


    $query = "SELECT COUNT(*) FROM table_1 WHERE conclusion = 
     'approved'";

    $result = mysqli_query($cxn, $query) or die(mysqli_error($cxn));

    $display = mysqli_fetch_array($result);

    $approved = $display[0];

    //echo $approved;



    $datarray = [$rejected, $accepted, $dash, $approved];

    print_r($datarray);
    $data_string = "[" . join(", ", $datarray) . "]";
    echo "<br>";
    print_r($data_string);

?>
4

1 回答 1

2

您可以只使用 GROUP BY 并将结论列添加到结果集中,所以

SELECT conclusion, COUNT(*) as total
    FROM table_1 
    WHERE conclusion in ('rejected', 'accepted', '-', 'approved')
    GROUP BY conclusion

然后检索结果集的每一行

$totals = [];
while($row = mysqli_fetch_array($result))  {
    $totals [$row[0]] = [$row[1]];
}

并且$totals将是一个类似的数组

array( 'accepted' => 12, 
       'approved' => 20...)

如果您想要所有结论,则只需删除该WHERE conclusion in行,它将返回所有可能性以及计数。

于 2019-09-04T14:55:09.150 回答