2012-12-16 168 views
2

我有搜索表單來搜索用戶名稱。問題是,在我的數據庫中,我有一個單獨的名字和姓氏列表。這是我的查詢目前看起來像(這是一個PHP腳本中,和$項搜索輸入):在多列中搜索多個術語

SELECT * FROM profiles WHERE firstname LIKE '%$term%' OR lastname LIKE '%$term%' 

此工作正常時,用戶只需輸入一個名字或姓氏,但對於全名稱,如「約翰史密斯」,這將無法正常工作。

如何修改我的查詢和/或php腳本來有效解決此問題?例如,我應該先分割字符串還是等等?

回答

1

你可以做這樣的事情

WHERE firstname||' '||lastname LIKE '%$term%' 

這comparares姓再加上一個空間,加上姓氏對%$term%

但是,您不應該使用變量構建SQL查詢。您應該通過PDO使用參數化查詢。例子見http://bobby-tables.com/php.html

+0

不幸的是,這並不適合我。我現在使用MATCH和AGAINST,但有一個缺點,即「artin」這個詞在結果中不會顯示「Martin」,但至少「marti」會這樣。是的,我不使用PDO只是爲了簡單,我通常使用mysqli準備語句:) –

+0

但是你沒有使用準備好的語句,或者如果你是,你沒有正確地做,因爲你正在構建你的SQL來自程序外的變量的聲明。 –

+0

我知道。我「通常」使用預先準備好的語句,但是我並沒有在這裏使用它,僅僅是因爲我不能被打擾,並且因爲它對我想知道的沒有什麼影響:查詢結構 –