2012-02-22 131 views
-2

我之前问过类似的问题,但没有全部事实。我将如何修改此查询以筛选出当前日期之前的所有日期?SQL过滤日期

$result = $wpdb->get_results("SELECT * FROM wp_location_date WHERE location=$id ORDER BY location_date"); 

完整的(ish)代码在WordPress的function.php文件中。

add_action('wp_ajax_nopriv_fetch_dates', 'get_location_date'); 
add_action('wp_ajax_fetch_dates', 'get_location_date'); 
function get_location_date() { 
global $wpdb; 
ob_clean(); 
$id = $_POST['id']; // Get the Request Id; 

$result = $wpdb->get_results("SELECT * FROM wp_location_date WHERE location=$id ORDER BY location_date"); 
foreach ($result as $value) { 
    $option .= '<option value="'.$value->id.'">'; 
    $option .= $value->date_coment; 
    $option .= '</option>'; 
    } 
echo '<option value="0" selected="selected">Select Date</option>'.$option; 

感谢您的帮助提前。

+1

你的问题是什么? – muratgu 2012-02-22 00:26:14

+0

我*认为*他们的问题是如何调整查询来筛选出日期早于今天的记录。 (发布修改后的帖子使其更加清晰) – Leigh 2012-02-22 03:47:33

回答

1
$result = $wpdb->get_results("SELECT * FROM wp_location_date WHERE location=$id and location_date >= curdate() ORDER BY location_date"); 

在附注中,请不要在SQL查询中使用原始用户输入!使用对字符串和整数INTVAL mysql_real_escape_string,如

$id = intval($_POST['id']); 

$result = $wpdb->get_results('SELECT * FROM wp_location_date WHERE location="'.mysql_real_escape_string($id).'" and location_date >= curdate() ORDER BY location_date'); 
1

什么location_date的数据类型? 你可以试试这个:在MySQL Reference Guide

$result = $wpdb->get_results("SELECT * FROM wp_location_date WHERE location=$id AND location_date > current_date - 1 ORDER BY location_date"); 

更多信息。