Hallo Ich schreibe die folgende AbfrageKombination mehrerer AND, NOT IN-Bedingung ist nicht richtig in php mysql query arbeiten
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
aber aus irgendeinem Grund zeigt es das Produkt mit der ID '20', '19', '18', '17', '11'
i nachdenken Informationen reichen aus, um dies zu lösen.
aktualisieren
Hier kann ich nicht herausfinden, wo ich ändern müssen. Hier verwende ich Ajax. Die ganze Operation findet auf dieser Seite statt. Post-Variable immer Seite aufgerufen Ajax die Operation i ausgeführt ist
$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";
Bitte sagen, was ist der Fehler in dieser Abfrage.
Abfrage erhalten wird als codierte Arbeits - Oder Zustand ist mächtiger als nicht - was insgesamt war Ihre Absicht? –