2011-01-21 84 views
1

在我的用戶表中,我有名字和姓氏字段。在mySQL中搜索包含來自mysql_real_escape_string()的斜槓的名稱

我也有按姓氏對用戶的搜索,但是當有一個像蘭奇用戶Ø搜索

  • LOR
  • LOR
  • L'Ô
  • L'

不工作而

  • L \'Ó做(這是有道理的,但不是用戶會認爲的)

那麼,怎樣才能我的查詢帳戶是什麼?現在我的查詢我有

OR (CONCAT(`lName`, ', ', `fName`) LIKE '$term') 

我想搜索LO或L'O操作的工作(我認爲)沒有任何理由的搜索應該要求「?

+0

您是否使用addslashes()來過濾$ term?如果是的話,他們應該已經添加了所需的斜槓,如果沒有,那麼這就是你錯過的(順便說一句,你有一個SQL注入等待在那裏發生)。 順便說一下,不要使用addslashes(),至少應該使用mysql_real_escape_string(),因爲addslashes()不會清理所有內容。 – 2011-01-21 01:50:26

+0

不,我沒有,但這是有道理的...我使用mysql_real_escape_string() - 不只是addslashes()後來。 – Jason 2011-01-21 01:55:06

回答

0

你如何接收搜索詞並將mysql_real_escape_string應用到它?

$term = mysql_real_escape_string($term); 

然後

OR (CONCAT(`lName`, ', ', `fName`) LIKE '$term') 

應該工作。用戶將不得不搜索l'o或L'O,但這應該起作用。

相關問題