Intereting Posts
Reddit api sdk ничего не делает, возвращает null PHP cURL в аутентифицированный сайт, когда он уже вошел в систему Избегайте общей папки laravel и открывайте непосредственно корень на веб-сервере Установить значение по умолчанию поля выбора Symfony FormType Тернарный оператор, не работающий со ссылочными переменными в PHP Создайте новый magento Rest api, чтобы получить список категорий в magento Подзапрос Доктрины в InnerJoin как вы обнаруживаете, пришел ли ваш посетитель сайта из результатов поиска Google? Как я могу лучше понять уровень сервиса в symfony2 в php Внедрение secp256k1 (ECDSA) в PHP (для биткойнов) Подготовленное заявление против хранимой процедуры Как выбрать уникальное значение из столбца на основе нескольких идентификаторов во многих случаях? Строгие стандарты: только переменные должны передаваться по ссылке в m_auth Обновление только части страницы PayPal IPN симулятор получить ошибку?

Поиск в текстовом режиме MySQLi для нескольких столбцов

Я хочу сделать полнотекстовый поиск mysqli с или без нескольких категорий на основе выбора флажка.

Поиск основан на четырех категориях в одной колонке.

Категория поиска – это окна, игры, планшеты, мобильные телефоны.

Когда категория / множественная категория, выбранная путем выбора выбора флажка, должна выполняться только для выбранной категории.

Структура таблицы

id category title date ... 1 windows windows7 d1 ... 2 games windows games d2 ... 3 tablet windows tablet d3 ... 4 mobile windows mobile d4 ... 5 windows windows8 d5 ... 6 windows windows vista d6 ... 

флажки для поиска

Поиск в

  <li><label><input name="all" type="checkbox" checked="checked" />All</label></li> <li><label><input name="windows" type="checkbox" />Windows OS</label></li> <li><label><input name="mobile" type="checkbox" />Windows Mobile</label></li> <li><label><input name="games" type="checkbox" />Windows Games</label></li> <li><label><input name="tablet" type="checkbox" />Windows Tablet</label></li> 

Example1:

 Search for 'windows' should return result as windows7 windows8 windows vista When only checkbox windows is checked 

Example2:

 Search for 'windows' should return result as windows7 windows8 windows vista windows games When checkbox windows and games are checked. 

Я сделал запрос, но он не работает вообще.

 $query = "SELECT * FROM $table WHERE "; $query .= "category='' "; $query .= "OR category='windows' "; $query .= "OR category='games' "; $query .= "OR category='mobile' "; $query .= "OR category='tablet' "; $query .= " AND MATCH (title) AGAINST ('+$keyword*' IN BOOLEAN MODE) ORDER by id desc, title desc LIMIT 10"; 

Я тоже так пробовал, но не работал.

 $query = "SELECT * FROM $table WHERE "; $query .= "MATCH (category) AGAINST ('' IN BOOLEAN MODE) "; $query .= "OR MATCH (category) AGAINST ('windows' IN BOOLEAN MODE) "; $query .= "OR MATCH (category) AGAINST ('games' IN BOOLEAN MODE) "; $query .= "OR MATCH (category) AGAINST ('mobile' IN BOOLEAN MODE) "; $query .= "OR MATCH (category) AGAINST ('tablet' IN BOOLEAN MODE) "; $query .= " AND MATCH (title) AGAINST ('+$keyword*' IN BOOLEAN MODE) ORDER by id desc, title desc LIMIT 10"; 

Посмотрите, почему он не работает и подскажите, как можно выполнить поисковый запрос без выбранных полей.

Благодарю.

 SELECT * FROM table WHERE MATCH (field1, field2, field3, field4) AGAINST ('keyword' IN BOOLEAN MODE) 

кажется, что вам нужно.

Но ваш запрос широко открыт для SQL-инъекции.

Теперь можно ответить. так, здесь идет решение, основанное на safeMysql (поскольку raw mysqli будет занимать слишком много кода)

 $sql = "SELECT * FROM ?n WHERE category IN(?a) AND MATCH (title) AGAINST (?s IN BOOLEAN MODE) ORDER by id desc LIMIT 10"; $data = $db->($sql,$table,$_GET['category'], $_GET['keyword']); 

Обратите внимание, что вы должны называть свои поля

 <input name="category[]" value="windows" type="checkbox" />