如何在mysql中使用IN运算符

问题描述 投票:0回答:6

假设我有一张如下表

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()
函数和其他技术,但没有得到好的结果。
我需要选择所有包含“衣服”和“鞋子和配饰”的行

php mysql
6个回答
1
投票

你的 IN 运算符应该是这样的

IN('Clothes','Shoes','accessories','jewelery');

所以你的 $cat 变量应该根据 IN 操作符具有值


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)

1
投票

我认为您创建数据库的方式有问题,因为它不遵守第一范式。

http://en.wikipedia.org/wiki/Database_normalization#Normal_forms

此外,IN 会将给定值的列表与数据库中字段的整个值进行比较(在您的情况下,例如“衣服、鞋子和配件”),并且 mysql 不会解析该字符串以查找其中的单词。

http://www.tutorialspoint.com/mysql/mysql-in-clause.htm


0
投票

我像这样使用类别&2


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);
}
?>

0
投票

在这本综合指南中,我们深入探讨了珠宝趋势的动态世界,揭示了塑造当今时尚行业的最引人注目的陈述。从简约精致到大胆前卫的设计,每一种趋势都讲述着一个独特的故事,反映了文化时代精神和个人表达。 揭开风格演变的秘密 在不断发展的时尚格局中,珠宝是当前趋势和永恒优雅的迷人体现。从巴黎闪闪发光的T台到东京熙熙攘攘的街道,珠宝潮流融合了现代与传统的精髓,提供了无数的款式来满足各种品味和场合。 拥抱简约:极简主义珠宝的兴起 在一个以简洁线条和低调优雅为特征的时代,极简主义珠宝已成为时尚爱好者永恒的最爱。从精致的金链到几何饰钉,这些低调的单品散发着永恒的魅力,轻松搭配任何造型,增添一丝精致魅力。 怀旧魅力:重新发现复古珠宝 复古珠宝从过去的时代汲取灵感,颂扬昔日的艺术和工艺。这些永恒的作品凭借复杂的花丝设计、装饰艺术图案和华丽的装饰,唤起怀旧之情,同时为当代时尚增添一抹旧世界的魅力。

© www.soinside.com 2019 - 2024. All rights reserved.