0

我有一串数据,我从中剥离了一些单词,然后放入一个数组中以放入查询中。

这些词似乎很好,但类似的声明仍然在它们所在的位置并为它们插入一个空白搜索。这是在退缩一切,这是不好的。

我不太确定为什么会这样。我看起来不像是在单词之间添加了一个额外的空格,我已经尝试打印出数组并且没有任何东西看起来像这样,所以我很茫然。

这是我的 str_replace

$str = str_replace(array('and', 'this', 'that', 'or', 'boo', 'wound', 'but'), '', $userPost);

然后我在这个空间爆炸,把它变成一个数组

$words = explode(' ', $str);

然后在 foreach 我做我喜欢的声明

 $this->db->or_where("`terms` LIKE '%$word%'");

查询是这样出来的

SELECT * FROM (`filter_tbl`) WHERE `terms` LIKE '%real%' OR `terms` LIKE '%%' OR `terms` LIKE '%blank%' OR `terms` LIKE '%%' OR `terms` LIKE '%%' OR `terms` LIKE '%%' OR `terms` LIKE '%%' OR `terms` LIKE '%I%' OR `terms` LIKE '%love%' OR `terms` LIKE '%%' OR `terms` LIKE '%ty%' OR `terms` LIKE '%lets%' OR `terms` LIKE '%see%' OR `terms` LIKE '%if%' OR `terms` LIKE '%%' OR `terms` LIKE '%goes%' OR `terms` LIKE '%through%' OR `terms` LIKE '%please%' OR `terms` LIKE '%gg%' OR `terms` LIKE '%through%' OR `terms` LIKE '%%' OR `terms` LIKE '%%' OR `terms` LIKE '%%' 

我知道这可能是我缺少的一些简单的东西,但我就是看不到它。帮助表示赞赏!

4

1 回答 1

1

正如人们在上面发布的那样,您的查询对于全文索引不正确。一堆 OR 子句通常会起作用,但性能可能不是很好。

如果您想在输入末尾去掉多余的空格,您可能只需要从数组中修剪多余的空格

$words = explode(' ', $str); // from your code
$words = array_map('trim',$words); // trim any extra whitespace from the words array
$words = array_filter($words); // remove any blank elements

这应该消除 OR 子句中的任何无关条目。

于 2013-07-01T22:59:42.973 回答