1

いくつかの入力フォーム値に依存するクエリを作成しており、ある時点で3つの値に取り組んでいます。クエリされる最初の値は常に0である必要があるため、次のようになります。

.. AND value_1 = 0

私がきれいにできるようにしたいのは次のとおりです。

チェックボックス_2がチェックされている場合:

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

チェックボックス_3がチェックされている場合

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

チェックボックス_2とチェックボックス_3がチェックされている場合

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

私は文字列でSQLクエリを作成していますが、これを行うためのクリーンな方法は何でしょうか。

4

2 に答える 2

1

implode最もクリーンな方法は、SQLクエリで使用されるオプションと文字列のいずれかで満たされた配列を作成することです。

<?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

チェックボックス_1が常にチェックされ、さ​​らにチェックボックス_2またはチェックボックス_3がチェックされるようにしますか?このようになります

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