带条件的PHP-MySQL查询
我被一个简单的查询卡住了,我不明白为什么它没有做我期望它做的事情。我在数据库上设置了3个值,如下所示:带条件的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查
$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
然后该行的最后一个条件计算为10var\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!感谢在;)