从sql语句创建连接AND函数

时间:2015-10-30 11:15:36

标签: php mysql

我有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,上面的代码片段是儿子

0 个答案:

没有答案
相关问题