我正在构建一个简单的搜索算法,我想用空格打破我的字符串,并在其上搜索我的数据库,如下所示:
$search = "Sony TV with FullHD support";
$search = explode( ' ', $search );
SELECT name FROM Products WHERE name LIKE %$search[1]% AND name LIKE %$search[2]% LIMIT 6
Run Code Online (Sandbox Code Playgroud)
这可能吗?
提前致谢
Gli*_*ire 47
是的,您可以使用SQL IN
运算符搜索多个绝对值:
SELECT name FROM products WHERE name IN ( 'Value1', 'Value2', ... );
Run Code Online (Sandbox Code Playgroud)
如果您想使用LIKE
,则需要使用OR
:
SELECT name FROM products WHERE name LIKE '%Value1' OR name LIKE '%Value2';
Run Code Online (Sandbox Code Playgroud)
使用AND
(正如您所尝试的)要求所有条件都为真,使用OR
要求至少有一个为真.
尝试这个
使用 UNION
$sql = '';
$count = 0;
foreach($search as $text)
{
if($count > 0)
$sql = $sql."UNION Select name From myTable WHERE Name LIKE '%$text%'";
else
$sql = $sql."Select name From myTable WHERE Name LIKE '%$text%'";
$count++;
}
Run Code Online (Sandbox Code Playgroud)
使用 WHERE IN
$comma_separated = "('" . implode("','", $search) . "')"; // ('1','2','3')
$sql = "Select name From myTable WHERE name IN ".$comma_separated ;
Run Code Online (Sandbox Code Playgroud)