0

最初に質問を説明し、次に問題に対する私の解決策のいくつかを説明しましょう。(確かに多くの人に来たでしょうが、クリーンなコードでそれを解決する方法がわかりません)

Q:mysqlデータベースがあり、複数の条件やwhere条件に基づいてクエリを実行したい。たとえば、column1 = 3で、column2は「ab%」とは異なります。

簡単な解決策(私はphp zendクエリビルダーを使用しているので)

if(column1)
$query->where(conditions);
if(column2)
$query->where(conditions);
.
.
.
if(columnn)
$query->join(some params)
      ->where(conditions);

または2番目の方法

複数の関数を作成し、それらを介してデータを渡します。

どちらがより良い実装ですか?同じことについて書かれた記事はありますか?

4

1 に答える 1

0

whereは次のようになります。

where
    (:p1 is null or col1 = :p1)
    or (
        (:p2 is null or col2 = :p2)
        and
        (:p3 is null or col3 like '%:p3')
    )

これら:pはパラメータです。そのパラメータが指定されていない場合は、として渡しますnull

于 2012-10-18T14:44:25.350 に答える