2016-07-07 7 views
0

私は、ユーザー入力に基づいてmysqlクエリを構築する必要があるWebサイトを構築しています。ここでは、値だけでなくクエリ自体も変更する必要があります。条件付きのmysqlクエリのベストプラクティス

public function getUsers($options){ 
    $query = "SELECT * FROM Users"; // basic query 
    if($options->getAdminsOnly()){ 
     $query .=" WHERE type='admin' "; 
    } 
    if($options->getOrderBy() !=null){ 
     $query .=" ORDER BY ".$options->getOrderBy(); 
    } 
    if($options->groupBy() !=null){ 
     $query .=" GROUP BY ".$options->groupBy(); 
    } 
    if($options->getLimit() !=null){ 
     $query .=" LIMIT ".$options->getLimit(); 
    } 
    if($options->getOffset() !=null){ 
     $query .=" OFFSET ".$options->getOffset(); 
    } 
    .... 
    .... 
} 

これは参加するなどの場合にも、乱雑を取得...あります:どのような私はこれを持っていることはこれまでに動作しますが、非常に厄介である条件のif-elseソリューション...

は例

ですこれを行うクリーナーの方法?

答えて

0

SQLクエリを作成するのに役立つオブジェクトリレーショナルマッピング(ORM)ライブラリが既に用意されています。

Good PHP ORM Library?

+0

グレート、あなたは私があれば、他のソリューションを避けるために、ORMを使用する方法のいくつかの例を提供することができます:私は、車輪を再発明しないと、顔をしていますか?ありがとう... –

+0

@DanielValland - それはif-else条件を助けませんが、追加した後に2番目のWHEREを追加したいと言うことができます。あなたが運が悪いSQLを解析することができるライブラリで文字列をチェックします。しかし、あなたが使用するコードの量を減らすことができます。あなたのチェックは、戻り文字列が空であるかどうかを確認することですので、 ? '$ options-> getQuery()'ここで、getQuery関数は空のチェックを個別に行いますか? – Jim