也许这听起来很疯狂,但我无法想出一个更好的头衔。
我单击一个按钮,我向查询发送一个日期(Ymd),查询是否找到数据,如果找到数据,它会返回数据,如果没有找到数据,则返回null。
现在我想这样做,如果我发送的日期没有可用的数据,那么将返回数据实际存在的下一个日期。
所以实际上我发送了8月30日的搜索,如果8月30日没有数据,查询应该在过去的第二天搜索可用数据,所以如果它在8月2日找到数据,那么数据8月2日应归还。
我试过"日期< =实际日期"和"如果结果== 0"等等,但我只是在黑暗中攻击。 返回始终是一堆数据,而不仅仅是一行。
我的代码现在看起来像这样:
$category = $_GET['category'];
$query = mysqli_query($bd, "SELECT MAX(datum) as max_datum, MIN(datum) as min_datum FROM macapps WHERE free = 1 AND category = '".$category."' ") or die(mysqli_error());
$date = mysqli_fetch_assoc($query);
$day = isset($_GET['date']) ? $_GET['date'] : 0;
$date = date('Y-m-d', strtotime($date['max_datum'] . ' ' . $day . ' day'));
$result = mysqli_query($bd, "SELECT appID, title, icon, category, datum FROM macapps WHERE datum = '".$date."' AND free = 1 AND category = '".$category."' ORDER BY title") or die(mysqli_error());
$rows = array();
while($count = mysqli_fetch_assoc($result)) {
$rows[] = $count;
}
echo json_encode($rows);
答案 0 :(得分:2)
尝试此查询
Select
appID, title, icon, category, datum
From
macapps
Where datum = (Select
m.datum
From
macapps m
WHERE
m.datum <= '.$date.'
Order By m.datum Desc
LIMIT 1
)
And
Free=1
And
category = '.$category.'
Order By title;
另一个查询
Select
appID, title, icon, category, datum
From
macapps
Where datum = (Select
Max(m.datum)
From
macapps m
Where
m.datum <= '.$date.'
)
And
Free=1
And
category = '.$category.'
Order By title