查询顺序中的问题是降序

时间:2011-03-30 08:28:21

标签: php mysql

我在mytable中有29行,日期时间(dt)。我想按降序排序 当我查询表时,它给出的结果从28开始(29没有给出),28之后它从1,2开始...... 27在哪里         (1-27 datetime is 0000-00-00 00:00:00),29有最近的时间。


$dt1=$_GET['dt'];
$query="SELECT * FROM table ORDER BY dt DESC";
$result1 = mysql_query($query);
$table = mysql_fetch_array($result1, MYSQL_ASSOC);
$dt2=$table['dt'];
echo $dt2."
"; // if here i echo $table['id']; the result is here 29 if(strtotime($dt1) < strtotime($dt2)) { while ($table = mysql_fetch_array($result1, MYSQL_ASSOC)){ echo $table['id']."<br />"; echo $table['name']."<br />"; } } else echo "false";


为什么没有显示最后一个id,即29

3 个答案:

答案 0 :(得分:1)

您在第3行读到第一行$table

$result1 = mysql_query($query);

因此,当您输入while循环时,您会将第二行读入$table,导致您错过第一行。

编辑: 您可以通过在启动while循环之前重置行指针来防止这种情况,如下所示:

mysql_data_seek($query,0);
while(..........

答案 1 :(得分:0)

你正在从while循环中取出数组,所以在while循环中你从fetch_array得到-1条记录。

因为我猜你用GET ['dt']变量按日期过滤了。

您可以直接在SQL查询中过滤记录。

喜欢这个

SELECT * FROM table WHERE dt > {$_GET['dt']} ORDER BY dt DESC

小心传递正确的日期格式。

答案 2 :(得分:0)

只需删除您的第$table = mysql_fetch_array($result1, MYSQL_ASSOC); 行即可:

$dt1=$_GET['dt'];
$query="SELECT * FROM table ORDER BY dt DESC";
$result1 = mysql_query($query);
$dt2=$table['dt'];
echo $dt2."
";   // if here i echo $table['id'];  the result is here 29 
if(strtotime($dt1) <  strtotime($dt2))
{
while ($table = mysql_fetch_array($result1, MYSQL_ASSOC)){

    echo $table['id']."<br />";
    echo $table['name']."<br />";

   }
     }
   else
       echo "false";