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