2014-05-13 48 views
0

我有一個php mysql查詢下面,噹噹天(-13-)中的所有行在日期(05-13-2014):php mysql like語句,需要從數組中的幾個值

$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); 爲了顯示全部具有上述數組的七個值的行。

此查詢應該執行的操作是顯示在當天接下來七天內具有日期的表的所有行。我怎樣才能做到這一點?讓我知道是否還有什麼我可以提供幫助你更好地理解我正在嘗試做什麼。

在此先感謝,任何幫助將不勝感激。

+1

可能會做一個查詢,其中日期小於當前日期加上7天的MySQL格式,而不是你在這裏做什麼。 – Bryan

回答

1

如下嘗試:

$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); 
+0

嗨,我試過這個,它的工作原理,我只需要進行更改,因爲我的查詢函數接受變量作爲查詢值,所以我只設置day1 = $ query_parts [0]; ...等到第7天。現在一切正常。我確實有1個問題,我正在處理查詢性能不好的值的方式嗎? – user3007683

0

當這樣的事情,我的工作我的存放時間劃時代所以它是爲做一個小的數學得到任何你想要的那樣簡單。

<?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";