我在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
答案 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";