带条件的PHP-MySQL查询

带条件的PHP-MySQL查询,php,mysql,sql,conditional-operator,Php,Mysql,Sql,Conditional Operator,我被一个简单的查询卡住了,我不明白为什么它没有做我期望它做的事情。我在数据库上设置了3个值,如下所示: $measure = 'kg'; $country_code = 'DE'; $weight = '5'; WEIGHT_UNIT | COUNTRIES | MAX_WEIGHT | PRICE kg | DE,AT | 10 | 25.55 lbs | DE,AT,CH | 5 | 15.99 我的PHP查

我被一个简单的查询卡住了,我不明白为什么它没有做我期望它做的事情。我在数据库上设置了3个值,如下所示:

$measure = 'kg';
$country_code = 'DE';
$weight = '5';

WEIGHT_UNIT | COUNTRIES | MAX_WEIGHT | PRICE
kg          | DE,AT     | 10         | 25.55
lbs         | DE,AT,CH  | 5          | 15.99 
我的PHP查询如下所示:

SELECT *
FROM `article_shipping_options`
WHERE `weight_unit` = '$measure'
    AND `countries` LIKE '%$country_code%'
    AND `max_weight` <= '$weight'
LIMIT 1;
选择*
从“文章”到“运输”选项`
其中,`weight\u unit`='$measure'
和“%$code%”等“国家”

和“最大重量”尝试使用
在集合中查找()
并使用
max\u-weight>=“$weight”

SELECT * 
FROM   article_shipping_options 
WHERE  weight_unit='$measure' AND 
       FIND_IN_SET($country_code, countries) > 0  AND 
       max_weight >= '$weight' 
LIMIT  1;

我认为您使用了错误的不等式运算符。它不应该是
max\u-weight>='$weight'

您的意思是
max\u-weight>=$weight

您将
$weight
设置为5,但行中的
max\u-HEIGHT
是10


然后该行的最后一个条件计算为
10
var\u dump(10)那么查询的结果是什么?如果要使用它进行查询,请不要将逗号分隔的值存储在单个数据库列中。您能做一个
描述表名
并粘贴结果吗?@ypercube,我读过
查询
atg的wiki,它说,
从数据库检索信息或其他信息的请求系统。此标记可用于引用针对数据库(SQL Server、Oracle、MySQL等)的SQL查询
所以我在这里添加了它。最后一个问题是一个错误。谢谢你的快速回答,我很感激!不幸的是,FIND_INT_SET和我的查询做的事情是一样的。我认为问题在于操作符部分。谢谢你的回答!是的,我也尝试过,但没有成功。这件事让我发疯:我经常使用操作符吗过去,但这是我第一次像这样陷入困境。是的,我也尝试过……到目前为止没有成功:(那么您可能已经将
max_-weight
字段定义为一个数字字段,在这种情况下,您应该删除
$weight
变量周围的引号?宾果!非常感谢!我不敢相信我犯了如此愚蠢的错误。我已经为此支付了一半的周日费用,但多亏了您,我现在可以休息一下了!@各位:谢谢大家想要帮忙,我真的很感激!@Jay那么你的问题是什么呢?但是如果操作符是问题的话,那将是一个解决方案。解决方案:那么你可能已经将max_weight字段定义为一个数字字段,在这种情况下,你应该删除$weight变量周围的引号?——由matt post下的mavili编写。非常有用@Jay!感谢在;)