2013-12-08 119 views
0
$Day = mysqli_real_escape_string($Connection, $_GET['day']); //1 
$Str = "-".$Day." day"; //"-1 day" 
$MinRange = date("Y-m-d", strtotime($Str))." 00:00:00"; //2013-12-07 00:00:00 
$MaxRange = date("Y-m-d", strtotime($Str))." 23:59:59"; //2013-12-07 23:59:59 
$query = mysqli_query($Connection, "SELECT * FROM `counter` WHERE time BETWEEN '{$MinRange}' AND '{$MaxRange}'") or die (mysqli_error($Connection)); 

while($Counter = mysqli_fetch_array($query)) 
{ 
echo $Counter['id']; 
} 

它总是跳过第一行,但它仍然不起作用,当我不使用范围,可能是循环的问题?我看到人们使用这个循环没有问题MYSQL不返回第一行

+0

使用占位符。问题可能在于数据库中的信息或提供的限制(例如,它不在“值”之间)。另外,为了检查日期,比较为WHERE DATE(x)= ..'(不需要处理时间)。在任何情况下,ORDER BY *必须*存在才能获得可靠的记录订单。 – user2864740

+0

看起来它不是循环问题,也不是查询问题,因为SELECT * FROM'counter'甚至没有工作,所以现在我猜测它是MySQLi问题?我对MySQL没有问题 –

回答

0

如果您的代码除第一行外都有效,您需要在前一天23:59:59开始搜索,或者尝试添加一个限制0,第二个数字30可以是任何你想要的,看看是否有效。

+0

我的搜索在23:59:59之前搜索,并且限制不起作用。第一行是15:52:04 –

0

这里是我的回答,我的猜测是,你已经某种ID的是主键:

"SELECT * FROM `counter` WHERE time BETWEEN '{$MinRange}' AND '{$MaxRange} ORDER BY `id` DESC" 

这将返回一个值,这将是最新记录。

+0

我需要多个回报 –

+0

不知道为什么你的代码被窃听 - 给更新一下。 ^^ – matrixdevuk