如何在带空格的字符串中使用SQL SELECT WHERE LIKE?

时间:2018-11-25 02:43:12

标签: php sql

当我这样做时,例如,搜索“ hello”,我得到所有使用“ hello”的实例。但是,如果我搜索“你好我的”,我只会得到两个单词紧随其后的实例。

$search = 'hello my';
$search = explode(' ', $search);

一旦我将其分解,我不确定该怎么做,我曾尝试使用如下所示的for循环:

for($i = 0; $i < count($search); $i++) {
    $search = $search[$i];
}

我还尝试将SQL SELECT放入for循环中,以便进行多次搜索,但没有用。我的SQL语法如下所示:

SELECT * FROM table WHERE string LIKE '%$search%';

1 个答案:

答案 0 :(得分:2)

您可以尝试使用类似的方法来搜索搜索字符串中的任何单词:

$search = 'hello my';
$search = explode(' ', $search);
$query = "SELECT * FROM table WHERE string LIKE '%" . implode("%' OR string LIKE '%", $search) . "%'";
echo $query;

输出:

SELECT * FROM table WHERE string LIKE '%hello%' OR string LIKE '%my%'

如果要在搜索字符串中搜索所有个单词,请将上面代码中的OR更改为AND,即

$query = "SELECT * FROM table WHERE string LIKE '%" . implode("%' AND string LIKE '%", $search) . "%'";
echo $query;

输出:

SELECT * FROM table WHERE string LIKE '%hello%' AND string LIKE '%my%'

Demo on 3v4l.org