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>";
我有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>";