2013-11-06 3 views
-1

Так что я должен добавить запрос WHERE к этому плагину, который я использую для функции отчетности на сайте WordPress. У меня нет времени ничего делать, кроме добавления в другой столбец и фильтрации значений в этом столбце, поскольку для управления каждым обновлением не так много данных. Значение по умолчанию для добавляемого столбца равно нулю, но я добавлю новые записи для представления лет добавления новых людей. Однако, когда я фильтрую на основе значения столбца, весь запрос разбивается и не появляется. Понятия не имею почему. Вот раздел, в котором представлены результаты его запроса.Ввод моего WHERE в запрос разбивает его

<?php 

$sql = "SELECT COUNT(*) FROM " . $wpdb->prefix . "presidentsreport_breakdown WHERE list_id = " . $atts['list_id']; 
    $total_breakdowns = $wpdb->get_var($sql); 

    $sql = "SELECT p.person_id, p.name, p.notes, p.school_year, b.breakdown_id, b.name as breakdown, b.description as breakdown_description FROM " . $wpdb->prefix . "presidentsreport_person p INNER JOIN " . $wpdb->prefix . "presidentsreport_breakdown b ON b.breakdown_id = p.breakdown_id INNER JOIN " . $wpdb->prefix . "presidentsreport_list l ON l.list_id = b.list_id"; 
    $clean_where = " WHERE l.list_id = " . $atts['list_id']; 
    $where = ""; 
    if($search != ''){ 
     $where = " AND (p.name LIKE %s)"; 
     $arg = '%' . $search . '%'; 
     $args = array($arg); 
    } 

    $where = $wpdb->prepare($where, $args); 

    $order = " ORDER BY b.sort_order, b.breakdown_id, p.sort_name, p.name, p.person_id"; 
    $results = $wpdb->get_results($sql . $clean_where . $where . $order); 

?> 

Если я добавлю что-либо в переменную $, где он разбивает весь запрос. Так что, если я добавлю

<?php 

$where = " WHERE p.school_year <= 2011"; 

?> 

или

<?php 

$where = " WHERE p.school_year = 0"; 

?> 

Ничто не обнаружится, что в последнем примере, если значение по умолчанию равно 0 все должно отображаться независимо. Спасибо заранее за чтение!

+1

echo $ sql. $ clean_where. $ где. $ Заказ; –

+0

По-видимому, нет строк с годом <= 2011. У вас, вероятно, есть только строки с 'year> 2011'. Просто потому, что значение «0» является значением по умолчанию, не означает, что в нем не может быть никаких других значений. –

+0

Я нахожусь в верстаке, и у всех их есть 0, я установил его в верстаке –

ответ

2

Не добавляйте WHERE к переменной. Он уже назначен в $clean_where

$clean_where = " WHERE l.list_id = " . $atts['list_id']; 
Here ------------^ 

Вам необходимо сцепить свои параметры присоединения к переменной $where:

$where .= " AND p.school_year <= 2011"; 
+1

СПАСИБО! Я забыл про переменную $ clean_where, это был долгий день ... –

0

Там нет необходимости в каком месте, где!

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