Я борюсь с запросом WHERE IN - PullRequest
0 голосов
/ 01 октября 2019

Я не могу использовать этот код. Я повторил имплозу (и она работает отлично), но я не могу заставить его работать с запросом WHERE IN.

Я попытался повторить импорт, который работает, и код работает идеально, когдаЯ удаляю WHERE IN, так что я знаю, что элементы внутри и т. Д. Тоже работают.

$filter_category = "SELECT * FROM `youcard_wp`.`bc_term_relationships`
WHERE term_taxonomy_id = '57'";
$result_c = $conn90->query($filter_category);
while($row_c = $result_c->fetch_assoc()){
    $category_filter[] = $row_c['object_id'];
}

echo implode(',', $category_filter); // <- works great

$get_offer_list = "
SELECT * FROM `youcard_wp`.`bc_posts`
WHERE `ID` IN ('".implode(',', $category_filter)."')
AND post_status = 'publish'
AND post_type = 'portfolio'
ORDER BY menu_order ASC
";
$result = $conn90->query($get_offer_list);
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {

etc etc etc...

Ответы [ 2 ]

1 голос
/ 01 октября 2019

Тебе это не нужно. Вместо этого используйте это ...

SELECT x.columns
     , x.you
     , x.actually
     , x.want
  FROM bc_posts x
  JOIN bc_term_relationships y
    ON y.object_id = x.id
 WHERE x.post_status = 'publish'
   AND x.post_type = 'portfolio'
   AND y.term_taxonomy_id = 57
 ORDER 
    BY x.menu_order ASC
0 голосов
/ 01 октября 2019

Вы окружаете весь список IN парой одинарных кавычек, тогда как вам нужно будет заключать в кавычки каждое отдельное значение.

Обратите внимание:

$get_offer_list = "
    SELECT * 
    FROM `youcard_wp`.`bc_posts`
    WHERE 
        `ID` IN ('" .implode("','", $category_filter)."')
        AND post_status = 'publish'
        AND post_type = 'portfolio'
    ORDER BY menu_order ASC
";

Если IDs на самом деле являются числовыми значениями, а не строками, тогда вам вообще не нужны кавычки:

$get_offer_list = "
    SELECT * 
    FROM `youcard_wp`.`bc_posts`
    WHERE 
        `ID` IN (" .implode(",", $category_filter).")
        AND post_status = 'publish'
        AND post_type = 'portfolio'
    ORDER BY menu_order ASC
";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...