嗨,我写了下面的查询
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页面,我执行的操作是
$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";请告诉这个查询中的错误是什么。
发布于 2017-05-10 08:48:43
围绕着或表现出:
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``发布于 2017-05-10 08:51:54
您可以这样编写查询
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如果有两个或两个以上的条件,并且只需要一个答案,如
在您的情况下,您的查询似乎是错误的数据将得到
https://stackoverflow.com/questions/43887564
复制相似问题