我有100%的代码,但它没有显示MySQL数据库所需的最新细节。
$SQL = "SELECT * FROM wdclients ORDER BY 'id' DESC LIMIT 6";
$result = mysql_query($SQL);
while ($db_field = mysql_fetch_assoc($result)) {
echo $latest1;
print $db_field['clientid'];
echo $latest2;
print $db_field['cname'];
echo $latest3;
print $db_field['cname'];
echo $latest4;
}
现在的问题是我要求代码只显示数据库中的6个最新条目。我在数据库中有超过500个客户端,但它只显示前6个客户端并且从不更新。
" ID"数据库中的字段已设置自动增量值。
答案 0 :(得分:3)
如@BN所说,删除id
周围的引用。像这样进行查询:
SELECT * FROM wdclients ORDER BY id DESC LIMIT 0,6
或者,如果你坚持,把它改成这样的东西:
SELECT * FROM wdclients ORDER BY `id` DESC LIMIT 0,6
注意(')和(`)
之间的区别答案 1 :(得分:1)
虽然它通常可以解决问题,但按ID排序并不能保证输入最新数据。您最好添加一个DATETIME
字段,如date_created或date_updated,其中包含插入或上次更新记录时的时间戳,具体取决于您的意愿。这样你就可以确保按正确的时间顺序获取数据。
答案 2 :(得分:1)
您的第一个问题是您使用单引号而不是反引号来分隔该字段名称。
SELECT * FROM wdclients ORDER BY `id` DESC LIMIT 6
按字符串文字('id'
)排序并没有真正做任何事情,所以你最终得到了“自然”排序。
即存储中的物理排序,因为MySQL表没有固有的排序。而且,即使您在该ID字段上设置AUTO_INCREMENT
,也不会保证永久产生连续值(例如,可以使用来自旧的已删除行的ID)。
如果要按插入时间定义实际排序,则应使用已知的唯一顺序值自行设置ID。
答案 3 :(得分:0)
这是因为你把id放在普通的单引号中。您必须使用反引号才能将MySQL解析为值:
$SQL = "SELECT * FROM wdclients ORDER BY `id` DESC LIMIT 6";