我必须开发一个简单的搜索页面,将搜索字符串与MySQL表中的字段相匹配。
假设数据库表是"记录",考虑的字段是"record_title"。还要说以下是行中的"record_titles"。
字1 字2
字1 字3 字4
字5 字2 字1
字6
现在在搜索表单中,假设用户提交搜索词,例如"word1 word7","word1","word1 word5","word1 word2"等,它应该返回搜索词中至少有一个单词的记录标题。它不应该将搜索字符串作为子字符串,例如,如果搜索词是"word",则不应返回上述记录集中的任何记录。
我尝试跟随,但它有时与单个单词不匹配。
MATCH(`recordTitle`) AGAINST ('+word1 +word2' IN BOOLEAN MODE);
如何使用它(或其他解决方案)来选择包含至少一个单词匹配的记录。
谢谢。
吉尔
实际上你可以在运算符中使用sql - http://www.w3schools.com/sql/sql_in.asp和 PHP 内爆函数,用于制作数组的逗号分隔字符串以在 SQL 字符串中使用。
$searchArr = implode(', ', $arraySearch);
$sql = "select * from records where record_title in ($searchArr);";
假设您有一个要搜索的字符串:
variableToBeSearched = 'word word2 word3';
首先,您必须将其拆分为带有分隔符SPACE的数组(取决于您与MySQL一起使用的语言)。因此:
Array[0] = 'word'
Array[1] = 'word2'
Array[2] = 'word3'
然后迭代数组并生成查询字符串。
string Query = "SELECT * FROM records WHERE ";
if(Array.Length != 0)
{
For(i=0; i<Array.Length; i++)
{
if( i != (Array.Length-1) )
{
Query += "record_title LIKE '%" + Array[i] + "% ' OR ";
}
else
{
Query += "record_title LIKE '%" + Array[i] + "% '";
}
}
}
else
{
// No words found in the String :-)
}
然后执行查询。请告知我是否需要从我方面清除一些理解。