首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php mysql查询中,多重和NOT条件的组合不能正常工作。

在php mysql查询中,多重和NOT条件的组合不能正常工作。
EN

Stack Overflow用户
提问于 2017-05-10 08:45:37
回答 2查看 413关注 0票数 1

嗨,我写了下面的查询

代码语言:javascript
复制
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页面,我执行的操作是

代码语言:javascript
复制
$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";

请告诉这个查询中的错误是什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-10 08:48:43

围绕着或表现出:

代码语言:javascript
复制
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

更新尝试

代码语言:javascript
复制
 $query = "SELECT * FROM `product` WHERE (" . implode(' OR ', $parts). ")  AND `p_category``
票数 4
EN

Stack Overflow用户

发布于 2017-05-10 08:51:54

您可以这样编写查询

代码语言:javascript
复制
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

如果有两个或两个以上的条件,并且只需要一个答案,如

在您的情况下,您的查询似乎是错误的数据将得到

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43887564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档