我在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++;
}
我会告诉你如何做到这一点,但我向你保证,你真的不想这样做。正如Husman所说,您应该只显示1,但要将其链接到真实的数据库记录id号。
无论如何,如果你决定忽略这些好的建议,你会这样做:
在插入新记录之前,运行查询:
UPDATE table SET id = id+1 ORDER BY id DESC
然后插入id为1的新记录
既然你没有清楚地说明发生了什么,哪里出了问题,我只能猜测。我看到的是,您正在错误地更新数据库项的ID。
注意:
$query = "UPDATE table SET id = '$count'";
告诉数据库更新表并将所有id
's设置为$count
。有了这个,每次你运行这个,所有的ID都改变为相同的值。你想添加一个where
语句,这样你只更新当前项目,如:
$query = "UPDATE table SET id = '$count' WHERE added_name = '$temp'";
或
$query = "UPDATE table SET id = '$count' WHERE date = '{$row['date']}'";
我使用了代码中给出的变量。
where
语句。