SELECT from MySQL table - 将单列的每一行向下移动 1 行

SELECT from MySQL table - Move down every rows of single column by 1 row

我有MySQLtable。我用它在我的网站上显示数据:

$daily = "SELECT id, weight, sys FROM scale ORDER BY id DESC LIMIT 24";
$result_daily = $conn->query($daily);

<table>
while($row = $result_daily->fetch_assoc()) {
 echo "<tr><<td>". $row["id"]. "</td><td>" . $row["weight"] . "</td><td>". $row["sys"]. "</td></tr>";
}echo "</table>";}?>

这将显示如下数据:

  id. weight  sys
| 5. | 32.5 | 15 |
| 4. | 31.5 | 14 |
| 3. | 34.5 | 17 |
| 2. | 31.5 | 15 |
| 1. | 30.0 | 16 |

我想将 sys 列的每一行向下移动 1 行。像这样:

  id. weight  sys
| 5. | 32.5 |    |
| 4. | 31.5 | 15 |
| 3. | 34.5 | 14 |
| 2. | 31.5 | 17 |
| 1. | 30.0 | 15 |
$daily = "SELECT id, weight, sys FROM scale ORDER BY id DESC LIMIT 24";
$result_daily = $conn->query($daily);
$s="";

<table>
while($row = $result_daily->fetch_assoc()) {
 echo "<tr><<td>". $row["id"]. "</td><td>" . $row["weight"] . "</td><td>". $s. "</td></tr>";
 $s = $row["sys"];
}echo "</table>";}?>

您可以在循环时将之前的 sys 值保存在局部变量中:

$prev_sys = '';
while($row = $result_daily->fetch_assoc()) {
 echo "<tr><<td>". $row["id"]. "</td><td>" . $row["weight"] . "</td><td>". $prev_sys. "</td></tr>";
 $prev_sys= $row["sys"];
}

我建议将所有数据提取到一个数组中,然后使用数字键访问上一行。如果没有上一行,则提供空字符串作为默认值。

$daily = "SELECT id, weight, sys FROM scale ORDER BY id DESC LIMIT 24";
$result_daily = $conn->query($daily)->fetch_all(MYSQLI_ASSOC);

echo "<table>";
foreach ($result_daily as $key => $row) {
    echo "<tr>";
    echo "<td>". $row["id"]. "</td><td>" . $row["weight"] . "</td><td>". ($result_daily[$key++]["sys"] ?? ''). "</td>";
    echo "</tr>";
}
echo "</table>";