Как передать массив в MySql запрос для WordPress

djdiplomat
На сайте с 05.08.2009
Offline
136
700

Сечас запросы посылаю так:

$sql = "SELECT object_id, term_taxonomy_id FROM $wpdb->term_relationships WHERE term_taxonomy_id IN('14','25','35','66','67','68','20','73','74','50','70','71','75','76','77') AND object_id = '$post->ID'"; // вытаскиваем все категории объекта

$arr_cat = $wpdb->get_results($sql, ARRAY_A);

$cur_cat = $arr_cat[0]['term_taxonomy_id'];

хочу заменить IN('14','25','35','66','67','68','20','73','74','50','70','71','75','76','77') чем-то вроде

IN($arr_id_cat_kv)

Но есть проблема.

Я вытаскиваю из бд строку

$id_cat_kv = get_option('av_real_id_cat_kv'); //получили список id для квартир из БД

$arr_id_cat_kv = explode(", ", $id_cat_kv); // формирую массив

Потом пытаюсь запрос прописать так

$sql = "SELECT object_id, term_taxonomy_id FROM $wpdb->term_relationships WHERE term_taxonomy_id IN($arr_id_cat_kv) AND object_id = '$post->ID'";

возвращается нулевой результат.

Опытным путем выяснил, что это происходит потому, что каждая из цифр не обрамлена одинарными кавычками, как в самом первом варианте.

Можте кто-то подскажет, как все же запихнуть в IN() массив. И упростить код.

VHS
На сайте с 28.09.2007
Offline
142
VHS
#1

В языке запросов mysql нет массивов. implode / explode - наше все. Или иначе составлять запрос - использовать вложенные селекты. И вообще - запрос прекрасно отработает и без кавычек, используйте отладку, делайте

print $sql;

И смотрите что передается в тело запроса

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий