Как установить AND условие для ВСЕХ столбцов – php

В МОЕЙ ТАБЛИЦЕ, если я напечатаю

floor fly 

table return No matching records потому что поиск в Global Search php выполняет поиск записей внутри столбца SINGLE.
Но я хочу, чтобы условие AND работало со всеми столбцами.

Если я набираю floor fly должен показать что-то вроде:

 |__Column1___|___Column2____|__Column4_| | | | | |..FLOOR... |DREAMS - FLY | 1994 | | ..dreams | xyz | floor | 

Внимание: это не функция abc OR cde
Это мой php-код, но я не работаю так, как ожидаю:

 static function filter ( $request, $columns, &$bindings ) { $globalSearch = array(); $columnSearch = array(); $dtColumns = self::pluck( $columns, 'dt' ); if ( isset($request['search']) && $request['search']['value'] != '' ) { $str = $request['search']['value']; for ( $i=0, $ien=count($request['columns']) ; $i<$ien ; $i++ ) { $requestColumn = $request['columns'][$i]; $columnIdx = array_search( $requestColumn['data'], $dtColumns ); $column = $columns[ $columnIdx ]; if ( $requestColumn['searchable'] == 'true' ) { $binding = self::bind( $bindings, '%'.$str.'%', PDO::PARAM_STR ); $globalSearch[] = "".$column['db']." LIKE ".$binding; } } } 

Чтобы развеять любые сомнения по поводу того, что я хочу: LOOK

Это пример того, что я хочу

расширенный И

Solutions Collecting From Web of "Как установить AND условие для ВСЕХ столбцов – php"

Это немного для комментария.

Для этого типа поиска вы можете рассмотреть полный текстовый индекс. Документация находится здесь . Они реализуют MATCH . . . AGAINST MATCH . . . AGAINST MATCH . . . AGAINST функциональности.

С такой функциональностью вы можете заказать результаты по релевантности. Это означает, что вам не нужно заранее решать, является ли соединитель «и» или «или» между несколькими словами. Вы также можете реализовать логический поиск, который позволит более сложную сложную логику, если вы этого желаете.

ну, вы должны решить, какие критерии поиска вы хотите использовать. Если вы хотите, чтобы вы использовали совпадение по определенной фразе и не хотите использовать FULL TEXT search, вы должны перестроить свой запрос так:

 SELECT * FROM a WHERE a.col1 REGEXP 'text1|text2|text3' OR a.col2 REGEXP 'text1|text2|text3'; 

В вашем PHP-коде это должно быть как-то вроде этого (вы не указали формат входных данных, поэтому я предполагаю, что вы используете «$ str» как текст, разделенный пробелами, и хотите проверить все слова в фразе «$ str» для поиска :

 if ( $requestColumn['searchable'] == 'true' ) { $str = str_replace(" ","|",$str); $binding = self::bind( $bindings, $str, PDO::PARAM_STR ); $globalSearch[] = "".$column['db']." REGEXP ".$binding; }