2017-08-10 99 views
0

我不擅長PHP,我現在被卡住了。Implode /爆炸表數據到PHP查詢中的數組?

我在我的數據庫中的我的錶行之一有此代碼。 Danish_English_Swedish。數據來自表老師。

我有這個疑問:$db->prepare("SELECT * FROM teacher WHERE subject = ? ORDER BY id DESC");

我已經創建了一個AJAX請求時<select>被改變時調用。該請求被髮送到包含上述查詢的頁面。此選擇包含丹麥語,英語和瑞典語選項。

例如:

如果我選擇在<select>Danish和老師有含Danish_English_Swedish我想抓住從數據中Danish一行所以它MATHES用戶請求。

也許你可以implode /爆炸,並使其成爲一個數組,並檢查它的方式?

歡迎任何解決方案!

+2

如果您將多個值編碼到可能違反[零,一個或無限規則](http://en.wikipedia.org/wiki/Zero_one_infinity_rule) [數據庫規範化]( http://en.wikipedia.org/wiki/Database_normalization)。下劃線也是非常不規則的格式。 – tadman

+1

這些應該是數據庫中的獨立列。 –

+1

我同意你應該規範你的數據庫。總是。現在做。至於你的問題,你可以在你選擇的WHERE部分使用FIND_IN_SET('Danish',REPLACE('_',',','Danish_English_Swedish'))'。 –

回答

2

你需要LIKE statement

$db->prepare("SELECT * FROM teacher WHERE column LIKE ? ORDER BY id DESC"); 

注1:改變column名到Danish_English_Swedish包含

注2列的名稱:檢查你的數據庫/表的整理,如果它是_CI(病例不敏感),否則你想在運行查詢前做strtolower,並在表

中存儲值小寫注3:從你提供的描述我有感覺,你的數據庫結構和表格列並沒有很好地用於處理它們,但是你的特定案例答案在上面。

+0

謝謝!我需要的所有 –

+0

備註3加1! – Strawberry