我正在布尔模式下使用 MATCH 和 AGAINST 执行搜索查询,并且我将关键字存储在 ARRAY 中以显示它们像 TAGS,当我 IMPLODE 数组值以构造查询语句时它工作正常,但我想保留 BOLEAN 功能搜索,如“完全匹配”或其他特殊字符。
当数组值带有空格时是否可以插入引号?
INPUT: keyword1 keyword2 "exact match" keyword3
Covert to this array:
$keywords = array(
[0] = "keyword1",
[1] = "keyword2",
[2] = "exact match", <-- This came with quotes so is stored as a phrase
[3] = "keyword3"
);
然后我需要使用 implode 转换为 SQL 语句:
$SQL = "SELEC field WHERE MATCH(keywords) AGAINST('";
$SQL .= implode(" ", $keywords);
$SQL .= "' IN BOOLEAN MODE)";
我尝试使用 ARRAY_FILTER() 但它只区分一个而不是另一个:
function words($var){
return preg_match('/\s/', $var);
}
$SQL = "SELEC field WHERE MATCH(keywords) AGAINST('";
$SQL .= implode(" ", array_filter($keywords, 'words'));
$SQL .= "' IN BOOLEAN MODE)";
//example above only outputs: exact match
我的目标是在值带有两个以上单词时区分数组值,该函数为值添加引号
Expected Output:
$SQL = "SELECT field WHERE MATCH(keywords) AGAINST('keyword1 keyword2 "exact match" keyword3' IN BOOLEAN MODE)";
非常感谢你的帮助