我有mysql数据库,带有MyISAM引擎的全文索引UTF-8编码。 从数据库我可以执行这个sql:
SELECT * FROM table
WHERE
CONCAT(column1, column2, column3) LIKE '%free%' AND
CONCAT(column1, column2, column3) LIKE '%floor%'
免费和 floor 是示例单词。在这种情况下,数据库会返回仅包含两个字的行。如果一行在第一列中有'free'字样,在第三列中有'floor'字符 - 数据库返回值,但如果这两个字不包含在同一行数据库中,则不匹配任何内容。
但是......我的问题是在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[] = "match(".$column['db'].") against (".$binding.")";
$globalSearch[] = "`".$column['db']."` LIKE ".$binding;
}
}
}
但我不知道如何更改此代码使其像连接函数一样,我不知道如何将“$ str”作为空格分隔文本包含在内。
以下是不连接单词的示例,但它与我尝试的类似:LIVE DEMO
为了怀疑,我还插入complete code,上面的代码片段是儿子