2016-12-26 34 views
1

我有1個表,t1,大約有500多個數據行,我只是展示了一個示例數據。Mysql where子句(搜索表列匹配的地方)

數據如下:

+--------+----------+-------------------+ 
| id  | Name  | category   | 
+--------+----------+-------------------+ 
| 1  | ABC  | 6,9,25,27   | 
+---------------------------------------+ 

我的MySQL查詢象下面這樣:

$gcategory = intval($_GET['cat']); 
$test = DB::fetch_all("SELECT * FROM t1 WHERE category like '%$gcategory%' ORDER BY id DESC"); 
foreach($test as $te){ 
    $list[] = $te; 
} 

但如果$gcategory = '7';ABC也會出現在我的$list[],但我只想當$gcategory = '6' || $gcategory = '9' || $gcategory = '25' || $gcategory = '27'然後ABC只出現在我的$list[]?如何解決這個問題?

謝謝。

回答

4

請嘗試使用下面的方法,你應該使用當你從,價值分隔的列表中找到FIND_IN_SET PHP函數:

$gcategory = intval($_GET['cat']); 
$test = DB::fetch_all("SELECT * FROM t1 WHERE FIND_IN_SET("'.$gcategory.'", category) ORDER BY id DESC"); 
foreach($test as $te){ 
    $list[] = $te; 
} 
0

嘗試使用MySQL FIND_IN_SET()功能

您的查詢會是這樣

"SELECT * FROM t1 WHERE FIND_IN_SET($gcategory,category) ORDER BY id DESC"