下面有一个php mysql查询,当当前日期内的所有行(-13-)在一个日期(05-13-2014)中工作时,这个查询工作得很好:
$h = $time->igetDay();
$h = "%{$h}%"; 
$result = query("SELECT * FROM table_name WHERE table_column LIKE '%s'", $h);
print json_encode($result);我现在要做的是让所有的行都在当前一周的范围内。我创建了一个函数,该函数返回接下来7天的数组,如下所示:
$h = $time->igetWeekRange();
print_r($h);
//this displays: Array ( [0] => 13 [1] => 14 [2] => 15 [3] => 16 [4] => 17 [5] => 18                     
[6] => 19 [7] => 20 )
//I can also display the array like this:
Array ( [0] => -13- [1] => -14- [2] => -15- [3] => -16- [4] => -17- [5] => -18-                     
[6] => -19- [7] => -20- )我的问题是,我不知道如何使用查询:$result = query("SELECT * FROM table_name WHERE table_column LIKE '%s'", $h);来显示具有上面7个数组值的所有行。
此查询应该做的是显示表中在当前日期之后七天内有日期的所有行。我该怎么做?如果我还能提供什么帮助你更好地理解我想做的事情,请告诉我。
预先感谢,如有任何帮助,将不胜感激。
发布于 2014-05-13 09:22:21
试着在下面:
$h = $time->igetWeekRange();
foreach ($h as $val) {
    $query_parts[] = "'%".mysql_real_escape_string($val)."%'";
}
$string = implode(' OR table_column LIKE ', $query_parts);
$result  = query("SELECT * FROM table_name WHERE table_column LIKE {$string}");
print json_encode($result);发布于 2014-05-13 09:39:59
当我处理类似的事情时,我把我的时间存储在时代,所以它就像做一些数学来得到任何你想要的东西一样简单。
<?php
    $the_date =new DateTime("2014-05-13 10:46:09"); //Or new DateTime() for current date
    $date_in_epoch_time= $the_date->format('U');
    $a_week_ago=$date_in_epoch - (7 * 24 * 60 * 60)); //subtract a week in seconds
?>假设在将时间插入数据库之前将时间转换为划时代的时间,那么现在有了以秒为单位的日期,因此,如果您希望数据库中的项目是前一周的,您可以这样做:
"SELECT * FROM table_name WHERE other_table_column >= $a_week_ago AND table_column LIKE '%s', $h";https://stackoverflow.com/questions/23627175
复制相似问题