2010-03-27 31 views
1

我有一個表(tbl_world),它看起來像這樣的MySQL從兩列

id | first_name | last_name | age | class | 

搜索文本,現在我想搜索的可以在FIRST_NAME或姓氏

IM的任何地方使用文本下面MySQL查詢

"SELECT * FROM tbl_world WHERE REGEXP '".$word."' IN(first_name, last_name)"; 

其中$word是用戶輸入(也就是說,如果我搜索「地獄」,然後「你好」以及「wellhell」在結果也返回)

以上查詢顯示錯誤,請建議我在mysql中搜索優化方法。

另外問題:我應該使用LIKR還是RLIKE?

+0

這是至關重要的是,你轉義,過濾或綁定'$ word'來防止SQL注入。 http://stackoverflow.com/questions/216324/avoiding-sql-injection-in-a-user-generated-sql-regex – vladr 2010-03-27 15:28:40

回答

2

我會做到這一點:

"SELECT * FROM tbl_world WHERE first_name REGEXP '" . $word . 
    "' OR last_name REGEXP '" . $word . "'" 
0
"SELECT * FROM tbl_world 
WHERE first_name LIKE '%".$word."%' 
OR last_name LIKE '%".$word."%'"; 

(如果你想搜索多個字段中的字符串考慮啓用全文搜索。)

0
"SELECT * FROM tbl_world WHERE first_name LIKE '%'".$word."%' OR last_name LIKE '%".$word."%'"