【发布时间】: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 还很陌生,所以我从来没有想过这个.. 但是在稍微调整你的代码之后我得到了这个工作 - 谢谢你