2012-02-21 83 views
0

请看看这个mysql查询。它的应该做的很简单 - 列表日期,从不超过10天的时间戳创建。时间戳上的奇怪mysql行为

它的工作原理,但并不完美......

  • 如果我只有1时间戳匹配,我有0的结果。
  • 如果我有2个时间戳匹配,我有1个结果。
  • 如果我有3个时间戳匹配,我有2个结果
  • ...等等...

所以在表中的最新时间戳总是被忽略的查询,为什么呢?!

$timestamp_now = date('U'); 
$timestamp_10_day_back = $timestamp_now - 864000; 

mysql_select_db("$db_visitors"); 
$sql = "SELECT DATE(FROM_UNIXTIME(visitors_timestamp)) 
     FROM visitors 
     WHERE visitors_timestamp > $timestamp_10_day_back 
     ORDER BY visitors_timestamp DESC"; 
$sql = mysql_query($sql); 
$row = mysql_fetch_array($sql); 

while($row = mysql_fetch_array($sql)) { 
    echo $row[0] . "<br>"; 
} 

回答

7

只是删除

$row = mysql_fetch_array($sql); 

...这是你吞下第一个结果,因为你在while循环再次调用它的行$row = mysql_fetch_array($sql);那么

1

第一行被忽略。只要删除这一行。

0

尝试以下

$n=count($row); 
if($n>0){ 
for($i=0;$i<$n;$i++){ 
    echo $row[i];}} 

print_r($row); 
代码