我有两个表:
- 销售
- sales_size
我想查询受变量 $gender、$category 和 $brand 约束的 sales_sizes。
如果设置了各个变量,如何执行 where 语句,如果未设置,则如何不将它们包含在查询中?
[括号内为伪代码]
SELECT size, country
FROM `sales_sizes` WHERE sale_id IN (
SELECT sale_id
FROM `sales`
WHERE [gender = $gender if $gender isset]
AND [category = $category if $category isset]
AND [brand = $brand if $brand isset]
)
最佳答案
您可以将变量收集到数组中,然后像这样处理它:
$gender = 'f';
$category = null;
$brand = 'foo';
$rgCondition = ['gender'=>$gender, 'category'=>$category, 'brand'=>$brand];
$rgCondition = array_filter($rgCondition, function($x)
{
//strip null-ed values:
return isset($x);
});
$rgWhere = [];
foreach($rgCondition as $sField=>$mValue)
{
$rgWhere[] = '`'.$sField.'` = "'.$mValue.'"';
}
$sWhere = count($rgWhere)?' WHERE '.join(' && ', $rgWhere):'';
//var_dump($sWhere);
-我已经跳过了字符串转义,但不要忘记它。
关于php - mysql 选择变量设置位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19153794/