В форме ни один из входных данных не является обязательным. Итак, я хочу иметь динамическое предложение where в запросе wpdb.
В настоящее время это запрос:
$data = $wpdb->get_results($wpdb->prepare("SELECT * FROM
`wp_gj73yj2g8h_hills_school_data` where
`school_zipcode` = %d AND `school_type` = %s AND `school_rating` = %s
;",$selectedZip,$selectedType,$selectedRating));
если пользователь вводит только school_zipcode, тогда предложение where должно содержать только столбец «school_zipcode».
Точно так же и для других комбинаций.
Я бы не усложнял условия динамического предложения where … Я бы написал PHP-код, который создает запрос. Например…
НОТА!! ЭТОТ КОД НЕ ПРОВЕРЕН НА СЕРВЕРЕ, ЭТО ПРОСТО ИДЕЯ, КАК РЕШИТЬ ПРОБЛЕМУ!
<?php
$where_query = array();
// Make sure to escape $_POST
if (!empty($_POST['school_zipcode')) {
$where_query[] = "school_zipcode='" . $_POST['school_zipcode'] . "'";
}
// Make sure to escape $_POST
if (!empty($_POST['school_type')) {
$where_query[] = "school_type='" . $_POST['school_type'] . "'";
}
// Should result in WHERE school_zipcode='123' AND school_type='text'
$where_query_text = " WHERE " . implode(' AND ', $where_query);
$data = $wpdb->get_results($wpdb->prepare("SELECT * FROM `wp_gj73yj2g8h_hills_school_data` " . $where_query_text . ";"));
Других решений пока нет …