【发布时间】:2010-12-27 22:52:08
【问题描述】:
我想使用用户在字段中的输入来搜索数据。也就是说,如果用户输入 "D+t+y+g,k,j,h" 想要搜索具有字母 "d and t and y and g or k or j or h"。我尝试了 PHP str_replace 函数,但结果不喜欢。
//kw is text field...
if($kw != "") {
//here we check for some data in field; if yes, continue below
//c is for ',' replaced in JavaScript
$kw1 = str_replace("c"," OR bcm.keywords LIKE '$kw%' ",$kw);
//p is for '+' replaced in JavaScript//'bcm' is table name.
$kw3 = str_replace("p"," AND bcm.keywords LIKE '$kw%' ",$kw1);
//for appending into main query string
$app.=$kw3;
//$app.=" AND bcm.keywords LIKE '$kw%'";
}
...但是对于输入 "D+t+y+g,k,j,h",查询结果如下:
AND bcm.keywords LIKE 'Dptpypgckcjch%' t
AND bcm.keywords LIKE 'Dptpypgckcjch%' y
AND bcm.keywords LIKE 'Dptpypgckcjch%' g
OR bcm.keywords LIKE 'D
AND bcm.keywords LIKE 'Dptpypgckcjch%' t
AND bcm.keywords LIKE 'Dptpypgckcjch%' y
AND bcm.keywords LIKE 'Dptpypgckcjch%' gckcjch%' k
OR bcm.keywords LIKE 'D
AND bcm.keywords LIKE 'Dptpypgckcjch%' t
AND bcm.keywords LIKE 'Dptpypgckcjch%' y
AND bcm.keywords LIKE 'Dptpypgckcjch%' gckcjch%' j
OR bcm.keywords LIKE 'D
AND bcm.keywords LIKE 'Dptpypgckcjch%' t
AND bcm.keywords LIKE 'Dptpypgckcjch%' y
AND bcm.keywords LIKE 'Dptpypgckcjch%' gckcjch%' h**
...当我想要/需要的是:
AND bcm.keywords LIKE 'D%'
AND bcm.keywords LIKE 't%'
AND bcm.keywords LIKE 'y%'
AND bcm.keywords LIKE 'g%'
OR bcm.keywords LIKE 'k%'
OR bcm.keywords LIKE 'j%'
OR bcm.keywords LIKE 'h%'
【问题讨论】:
-
你知道......阅读你的代码和你的问题太难了。我以
not a real question的身份关闭... -
@Chacha:如果您可以投票关闭,那么您还应该有权编辑帖子以清理格式。更新 300 条帖子后,它甚至还有一个徽章 - Strunk & White。
-
如果其他人为他们修复它,他们永远不会知道 ;)
-
@Jani:如果您不提供降价链接,则不会:stackoverflow.com/editing-help
-
@dev646: 什么数据库?可能同样复杂,但将过滤条件转换为正则表达式可能是一个更好的主意。
标签: php javascript sql string