【问题标题】:How to get two SQL columns to echo out in two separate <td>'s side by side in PHP如何让两个 SQL 列在 PHP 中并排显示在两个单独的 <td> 中
【发布时间】:2019-02-04 13:44:57
【问题描述】:

我有一个 SQL 查询,它选择不同的行,计算一个值在数据库中的次数,然后在两个单独的 HTML 表中并排回显两个值

举个简单的例子.. 如果在数据库中'John' 被列出 7 次,'Bob' 被列出 3 次,'Jane' 被列出 5 次,我的 HTML 表应该回显为

+------+---+ | John | 7 | +------+---+ | Bob | 2 | +------+---+ | Jane | 5 | +------+---+ ' 我可以让名字有点工作,但不能让计数工作,所以我得到了

+------+---+ | John | | +------+---+ | Bob | | +------+---+ | Jane | | +------+---+

以下是我的实际代码。所有关于时间戳的位都在工作,只是 $row['count'] 位不起作用

//the SQL query $query = "SELECT distinct(file_name), COUNT(file_name) AS count FROM orders_thortful GROUP BY file_name ORDER BY file_name";

//initiate array
$timestamped_array = array();

if (sqlsrv_has_rows($search)) {

    while ($row = sqlsrv_fetch_array($search, SQLSRV_FETCH_ASSOC)) {   

        //takes file name string from db and puts into a proper date format
        $formatted_date = date_create_from_format('d-m-Y_h-i-sa', $row['file_name']);

        //takes date and puts into a timestamp (so it can be sorted)
        $timestamp = date_timestamp_get($formatted_date);

        //put $timestamp into $timestamped_array
        $timestamped_array[] = $timestamp;

        //put $row['count'] into an array so it can be iterated through in a foreach loop
        $count_array[] = $row['count'];

} 

    //iterate through the array, putting each value in a new td
    foreach($timestamped_array as $val){

            echo "<tr>";

                echo "<td>";

                    echo $val; // this works

                echo "</td>";

                echo "<td>";

                    echo $row['count'] //this doesn't work, ays value is NULL

                echo "</td>";

            echo "</tr>";

        }

}

【问题讨论】:

  • 如果将行数添加到数组中,为什么不在 foreach 中使用它?
  • ^^^ 那。请注意,在 while 循环之后,$row 将变为 null,并且启用错误显示会向您显示。
  • @Dialex 我以为我在第二次这样做
  • 我认为我的帖子对你有用,但如果你有想要在第一个循环中输出的所有数据,为什么还要做第二个? (为什么不在第一个循环中回显?)
  • 我对 PHP 还很陌生,所以我从来没有想过这个.. 但是在稍微调整你的代码之后我得到了这个工作 - 谢谢你

标签: php sql arrays foreach


【解决方案1】:

您应该将时间戳和计数添加到同一个数组中,然后迭代它们会更简单。

$dataArray = array();
while ($row = sqlsrv_fetch_array($search, SQLSRV_FETCH_ASSOC)) {
    $formatted_date = date_create_from_format('d-m-Y_h-i-sa', $row['sitma_file_name']);
    $timestamp = date_timestamp_get($formatted_date);
    $dataArray[] = array("time" => $timestamp, "count" => $row['count']); // save both timestamp and count in the array
}

foreach($dataArray as $element){
    echo "<tr><td>" . $element['time'] . "</td><td>" . $element['count'] . "</td></tr>";
}

请注意,在发布的代码中,您不会更改时间戳或计数中的任何内容,因此我认为您可能会在此处回显它们 - 但也许您有额外的代码没有发布......

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签