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ソリューション...
は例ですこれを行うクリーナーの方法?
グレート、あなたは私があれば、他のソリューションを避けるために、ORMを使用する方法のいくつかの例を提供することができます:私は、車輪を再発明しないと、顔をしていますか?ありがとう... –
@DanielValland - それはif-else条件を助けませんが、追加した後に2番目のWHEREを追加したいと言うことができます。あなたが運が悪いSQLを解析することができるライブラリで文字列をチェックします。しかし、あなたが使用するコードの量を減らすことができます。あなたのチェックは、戻り文字列が空であるかどうかを確認することですので、 ? '$ options-> getQuery()'ここで、getQuery関数は空のチェックを個別に行いますか? – Jim