1

我正在创建一个依赖于多个输入表单值的查询,并且在某些时候我正在处理三个值。查询的第一个值必须始终为 0,所以我有这个:

.. AND value_1 = 0

我希望能够干净地做的是以下内容:

如果 checkbox_2 被选中:

... AND (value_1 = 0 OR value_2 = 0)

如果 checkbox_3 被选中

... AND (value_1 = 0 OR value_3 = 0)

如果 checkbox_2 和 checkbox_3 被选中

... AND (value_1 = 0 OR value_2 = 0 OR value_3 = 0)

我在一个字符串中创建 SQL 查询,我想知道什么是一个干净的方法来做到这一点。

4

2 回答 2

1

最简洁的方法是创建一个数组,其中填充了 SQL 查询中使用的选项和implode字符串。

<?php

$options = array();
$options[] = 'value_1';
$options[] = 'value_2';

// add our condition to each column
array_walk($options, function(&$v) {
    $v = sprintf('%s = 0', $v);
});

// implode into SQL
$sql = sprintf('... AND (%s)', implode(' OR ', $options));

只需确保将复选框连接到$options阵列即可。

于 2012-10-22T08:14:11.317 回答
0

您是否希望始终选中 checkbox_1 以及 checkbox_2 或 checkbox_3?看起来像这样

... AND value_1 = 0 AND (value_2 = 0 OR value_3 = 0)
于 2012-10-22T08:04:56.047 回答