繁体   English   中英

多个AND的组合,NOT IN条件在php mysql查询中无法正常工作

[英]combination of multiple AND , NOT IN condition is not working properly in php mysql query

您好我写下面的查询

SELECT *
FROM `product`
WHERE (`color` IN ('black'))
   OR (`pattern` IN ('pattern-1', 'pattern-2', 'pattern-3'))
  AND `p_category` LIKE '%Blind%'
  AND id NOT IN('20', '19', '18', '17', '11')
ORDER BY id DESC

但出于某种原因,它显示的产品ID为'20', '19', '18', '17', '11'

我认为这些信息足以解决这个问题。

更新

在这里,我无法弄清楚我需要改变的地方。 我在这里使用ajax。 所有操作都在该页面中进行。 将变量获取到ajax称为page我执行的操作是

$keyword_array= ( [keyword] => Array ( 
                    [0] => color*black 
                    [1] => pattern*pattern-1
                    [2] => pattern*pattern-2
                    [3] => pattern*pattern-3 ) 
        [y_id] => Array ( 
                    [0] => 20
                    [1] => 19
                    [2] => 18
                    [3] => 17
                    [4] => 11 ) 
       [category] => Romex Blind );


       foreach ( $keyword_array as $value) {
            list($before, $after) = explode('*', $value);
            $elements[$before][] = $after;
        }

        $parts = [];

        foreach ($elements as $column => $values) {
            $parts[] = "(`$column` IN ('" . implode("', '", $values) . "'))";
        }

        $appear=implode("', '", $_POST['y_id']);

        $query = "SELECT * FROM `product` WHERE " . implode(' OR ', $parts). "  AND `p_category` LIKE '%".$_POST['category']."%' AND id NOT IN('{$appear}') ORDER BY id DESC";

请告诉我们此查询中的错误是什么。

围绕或表达破坏:

SELECT *
FROM `product`
WHERE (`color` IN ('black')
   OR `pattern` IN ('pattern-1', 'pattern-2', 'pattern-3'))
  AND `p_category` LIKE '%Blind%'
  AND id NOT IN('20', '19', '18', '17', '11')
ORDER BY id DESC

更新尝试

 $query = "SELECT * FROM `product` WHERE (" . implode(' OR ', $parts). ")  AND `p_category``

你可以写这样的查询

SELECT * FROM product WHERE (color = 'black' OR pattern IN ('pattern-1', 'pattern-2', 'pattern-3')) AND p_category LIKE '%Blind%' AND id NOT IN (20, 19, 18, 17, 11) ORDER BY id

如果有两个或更多条件并且只需要一个答案,则可以仅使用OR

在你的情况下你查询似乎错误的数据将获得

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM