Динамическое «Где» предложение в wpdb-> gt; подготовить запрос

В форме ни один из входных данных не является обязательным. Итак, я хочу иметь динамическое предложение 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».
Точно так же и для других комбинаций.

0

Решение

Я бы не усложнял условия динамического предложения 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  . ";"));
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector