2012-02-22 3 views
-2

Ранее я задавал аналогичный вопрос, но не имел всех фактов. Как мне изменить этот запрос, чтобы отфильтровать все даты до текущей даты?SQL-фильтр прошлых дат

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

Полный (ish) код в файле functions.php из WordPress.

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

+0

Я * думаю * их вопрос в том, как настроить запрос на фильтрацию записей, датированных ранее, чем сегодня. (Опубликовать измененную запись, чтобы сделать ее более понятной) – Leigh

ответ

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

На стороне заметьте, никогда не используйте необработанные пользовательские данные в ваших SQL-запросах! Используйте mysql_real_escape_string на струнных и intval на целых, таких как

$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? Вы можете попробовать это:

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

Более подробную информацию о MySQL Reference Guide.

Смежные вопросы