php - style - recorrer fetchall
Cómo se establece Y condiciona TODAS las columnas-php (2)
Esto es un poco largo para un comentario.
Para este tipo de búsqueda, puede considerar un índice de texto completo. La documentación está aquí . Estos implementan el MATCH . . . AGAINST
MATCH . . . AGAINST
MATCH . . . AGAINST
funcionalidad.
Con tal funcionalidad, puede ordenar los resultados por relevancia. Esto significa que no tiene que decidir de antemano si el conector es "y" o "o" entre varias palabras. También puede implementar una búsqueda booleana, que permitiría una lógica compleja más compleja, si así lo desea.
En MY TABLE si escribo
floor fly
la tabla No matching records
devuelve No matching records
porque los No matching records
búsqueda de funciones de búsqueda global php están dentro de una sola columna.
Pero quiero que esa condición Y funcione para TODAS las columnas.
Si escribo floor fly
table debería mostrar algo como:
|__Column1___|___Column2____|__Column4_|
| | | |
|..FLOOR... |DREAMS - FLY | 1994 |
| ..dreams | xyz | floor |
Atención: esta no es una función abc OR cde
Este es mi código php pero AND no funciona como esperaba:
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;
}
}
}
Para disipar cualquier duda sobre lo que quiero: MIRAR
Esta es una imagen de ejemplo de eso quiero
bien, debes decidir qué criterios de búsqueda quieres usar. Si desea utilizar coincidencias con ciertas frases y no desea utilizar la búsqueda FULL TEXT, debe reconstruir su consulta como:
SELECT * FROM a WHERE a.col1 REGEXP ''text1|text2|text3'' OR a.col2 REGEXP ''text1|text2|text3'';
En su código PHP, debería ser así de simple (no especificó el formato de datos de entrada, así que supongo que está usando "$ str" como texto separado por espacios, y quiere verificar todas las palabras en la frase "$ str" para buscar :
if ( $requestColumn[''searchable''] == ''true'' ) {
$str = str_replace(" ","|",$str);
$binding = self::bind( $bindings, $str, PDO::PARAM_STR );
$globalSearch[] = "".$column[''db'']." REGEXP ".$binding;
}