クラス を使用してmoduleSelectQuery、PHP で SQL クエリを生成しています。
基本的に、このクラスは、テーブル名、選択するフィールド、WHERE 条件など、SQL SELECT クエリの個々のコンポーネントを分割します。
ただし、これはネストされたクエリではすぐに複雑になります。WHERE table1.field1 IN (SELECT table2.field2 from table2 WHERE table2.field3 = criteria)
現在、句を格納するために使用さmoduleSelectQueryれる calledのプロパティがあります。他のプロパティ (つまり) と同様に、これはユーザー入力に基づいて独自の関数によって一緒に解析されます。$inWhereClauseWHERE... IN(SELECT...)$tableName, $whereClause, $havingClause
ただし、この解析機能は基本的に制限されています。プロパティを解析するのに十分な労力を費やしたとしても、$whereClause入れ子になった select ステートメントを追加することはできません。
$inWhereClauseこれを行う1つの方法は、別のmoduleSelectQueryオブジェクトに設定することだと思います。これは、親moduleSelectQueryがそれ自体が であるプロパティを持つことを意味しmoduleSelectQueryます。つまり、再帰オブジェクトになります。これはPHPで可能/良い習慣ですか? 他に欠点はありますか?