假设我有一个如下表格
DealId类别
1个服装
2衣服,鞋子和配件
3鞋子和配件
4个珠宝
5个服装,首饰
现在假设我得到类似的类别
$data['categories']='clothes,Shoes and accessories';
我使用以下代码:
$cat=$_REQUEST['categories'];
$query=mysql_query("select * from Deals where Categories IN ($cat)");
while($row=mysql_fetch_assoc($query))
{
echo json_encode($row);
}
我收到了一个错误,我也使用了split()
函数和其他技术,但是我没有得到好的结果。
我需要选择所有包含“衣服”和“鞋子和配件”的行
答案 0 :(得分:1)
你的IN运算符应该是这样的
IN('Clothes','Shoes','accessories','jewelery');
所以你的$ cat变量应该具有根据IN operater
的值答案 1 :(得分:1)
The IN operator allows you to determine if a specified value matches any one of a list or a subquery
您可以像
一样使用它select * from Deals where Categories IN ('value1','value2' etc)
答案 2 :(得分:1)
我认为您创建数据库的方式存在问题,因为它并不尊重第一个正常形式。
http://en.wikipedia.org/wiki/Database_normalization#Normal_forms
此外,IN会将给定值的列表与数据库中字段的整个值进行比较(在您的情况下,例如'衣服,鞋子和配件'),而mysql不会解析字符串来查找其中的单词。
答案 3 :(得分:0)
我喜欢这个类别& 2
答案 4 :(得分:0)
你可以试试这个
<?php
$cat=$_REQUEST['categories'];
$catArray=explode(",",$cat);
$sqlSearch='';
foreach($catArray as $onecat) {
$sqlSearch= ($sqlSearch!=''?' OR':'WHERE ')."Categories LIKE '%".$onecat."%' ";
}
$cat=str_replace(",","','",$cat);
$query=mysql_query("select * FROM Deals".$sqlSearch);
while($row=mysql_fetch_assoc($query)){
echo json_encode($row);
}
?>