0

M 在 mysql 上工作,我必须按时间倒序打印表中的数据。此外,我希望打印在顶部的名称在屏幕和数据库中都应具有 id 1。即它随着条目数量的增加而更新的时间。我使用了以下代码,但没有帮助:

$query = "SELECT * FROM table ORDER BY date DESC";
$count=1;

while ($row=mysql_fetch_array($result)) {
    $temp = $row['added_name'];
    $query = "UPDATE table SET id = '$count'";
    mysql_query($query,$conn);
    echo "<tr>
            <td>".$row['id']."</td>
            <td>".$row['added_name']."</td>
            <td>".$row['date']."</td>
          </tr>";
    $count++;
}
4

2 回答 2

0

我会告诉你如何做到这一点,但我向你保证,你真的不想这样做。正如 Husman 所说,您应该只显示一个 1,但让它链接到真实的数据库记录 ID 号。

无论如何,如果您决定忽略好建议,您会这样做:

在插入新记录之前,运行查询:

UPDATE table SET id = id+1 ORDER BY id DESC

然后插入 id 为 1 的新记录

于 2013-03-11T12:33:56.470 回答
0

由于您没有明确说明发生了什么以及出了什么问题,我只能猜测。我看到的是您错误地更新了数据库项目的 ID。

注意:

$query = "UPDATE table SET id = '$count'";

您正在告诉数据库更新表并将 ALL 设置id$count。这样,每次运行时,所有 ID 都会更改为相同的值。您想添加一个where语句,因此您只更新当前项目,如下所示:

$query = "UPDATE table SET id = '$count' WHERE added_name = '$temp'";

或者

$query = "UPDATE table SET id = '$count' WHERE date = '{$row['date']}'";

我使用了代码中给出的变量。您可以使用该项目独有的任何其他值或构建更大的where语句。

于 2013-03-11T12:37:11.793 回答