2010-12-08 114 views
2
我使用PHP來搜索一個MySQL數據庫

,我呼應查詢,以便我可以看到正在經歷什麼,它出來,因爲這:Mysql的搜索與PHP

select * from `parts` where 'category' like 'at' 

不過是被退回無關。我知道肯定有一個名爲「類別」的欄目和一個名爲「at」的欄目。如果我在%做%,它只是返回每個結果!

基本上我想所有的記錄,其中的是從你的問題的類別欄

+0

該字段是什麼類型?桌子的排列順序是什麼? – 2010-12-08 13:44:31

+0

請告訴我們更多關於cateogry字段及其包含的值。例如它是固定在兩個字符還是允許更長的字符串?是否區分大小寫?請向我們展示一些在執行「%at%」時選擇的其他值;是否真的是所有的價值,或者它可能是你有很多類別包含字母'at'的地方。你有沒有試過「at%」? – Spudley 2010-12-08 13:49:23

回答

2

SELECT * FROM parts哪裏像 '類'「在'

這沒有任何意義 - 類別中的引號聲明它是一個字面值而不是屬性名稱。

我知道肯定有一個名爲「類別」的列和一個名爲「at」的字段。

這讓人困惑。術語「列」通常代替「屬性」(後者是描述關係數據庫內數據結構的正確方法)。至於'領域' - 你的意思是一個屬性的實例嗎?

我想你的意思是你的代碼要做到這一點:

select * from parts where category like '%at%' 

(在backticks都是圍繞數據庫實體可選 - 即非文字值 - 除非它們包括空格)。請注意,使用TE就像沒有通配符操作是messey所以,如果你正在尋找「在」的值匹配,而不是「貓」或「附加」 ....

select * from parts where category='at' 
1

值目前尚不清楚,這應該是文字,哪些應該是字段名。使用左撇號字段名稱。所以,如果你希望所有的記錄,其中類別字段包含文字「在」,這樣做:

更改您的報價:

select * from `parts` where `category` like '%at%' 
1

不知道什麼你的意思叫場「在」,但如果行值 試試這個

select * from `parts` where category='at'; 
1

你真的不能使用像這樣比較兩個領域。 Like的第二個參數是一個模式,並被解釋爲正則表達式。你可以試試這個:

select * from parts where category like concat('%', at, '%') 

它會從at字段取值,然後加上%符號然後比較字段。