У меня есть запрос на извлечение записей из таблицы MySQL, в зависимости от результатов поиска, выполненных пользователем, которые затем представляются.
$abfrage = "SELECT id, motivname, preis, masse, produktart, neu, angebot FROM $db.artikel
INNER JOIN $db.formate ON $db.artikel.format=$db.formate.format
WHERE (UPPER(motivname) LIKE UPPER('%{$keywordAct}%')
OR id LIKE '%{$keywordAct}%'
OR UPPER(produktart) LIKE UPPER('%{$keywordAct}%'))
AND $db.artikel.aktiv=1
ORDER BY id";
Запрос работает отлично, за исключением того, что выражение aktiv = 1 опущено. Результаты также будут отображаться там, где для aktiv установлено значение 0. «aktiv» - это int-столбец в таблице «artikel» (см. Ниже).
Однако запрос работает нормально, если я переключаю последнее предложение
AND $db.artikel.aktiv=1
например
AND $db.artikel.neu=1
Статьи, где neu = 0, не отображаются, что также является int-столбцом.
Так что я думаю, что есть проблема в настройке таблицы в MySQL, но я не могу ее решить. Есть еще один столбец «aktiv» в другой таблице той же базы данных, но эта таблица не адресована этим запросом, и я также указываю столбец aktiv таблицы artikel.
Настройка таблицы выглядит следующим образом:
CREATE TABLE `artikel` (
`id` varchar(11) COLLATE utf8_bin NOT NULL,
`motivnummer` int(4) NOT NULL,
`motivname` varchar(255) COLLATE utf8_bin NOT NULL,
`format` int(2) NOT NULL,
`preis` decimal(10,2) NOT NULL,
`anzahl_lager` int(3) NOT NULL,
`anzahl_verkauft` int(4) NOT NULL,
`anzahl_kostenlos` int(4) NOT NULL,
`aktiv` int(1) NOT NULL,
`neu` int(1) NOT NULL,
`angebot` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Я рад некоторой информации о том, как сделать запрос таким, каким он должен быть. Заранее спасибо.
PS: по соображениям безопасности ключевые слова уже экранированы заранее.