str_replace和类似的查询

时间:2013-07-01 22:42:29

标签: php sql codeigniter str-replace

我有一串数据,我正在从一个数据中删除一些单词然后放入一个数组中以进行查询。

这些词似乎正在剥离,但是它的声明似乎仍然在它们所在的位置,并插入空白搜索它们。哪个是拉回一切,这是不好的。

我不确定为什么会这样做。我看起来并没有在单词之间增加一个额外的空间而且我已经尝试打印出阵列而没有看到任何东西,所以我不知所措。

这是我的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 '%%' 

我知道这可能是我想念的简单事情,但我看不到它。感谢帮助!

1 个答案:

答案 0 :(得分: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子句中的任何无关条目。