$_REQUEST['getA']、$_REQUEST['getB']、$_REQUEST['getC'] ・・・ とあり、
これらをMYSQLのSQL文に効率的に組み込んでいきたいです。
mysqlのデータと$_REQUESTのキー名と対応させた$lllを
foreachでそれぞれをswitchで処理を分けて、
$qqqのSQL文に組み込んでいるつもりです。
よろしくお願いします。
$lll = array(
"getA"=>"mysql_colum_name_A",
"getB"=>"mysql_colum_name_B",
"getC"=>"mysql_colum_name_C",
"getD"=>"mysql_colum_name_D",
"getE"=>"mysql_colum_name_E"
);
foreach($lll as $key=>$val){
if(!isset($_REQUEST[$key]) or $_REQUEST[$key]==='') continue;
switch($key){
case "getA":
$ga = explode("+", $_REQUEST[$key]);
$val_A = $val;
break;
case "getB":
$gb = $_REQUEST[$key];
$val_B = $val;
break;
case "getC":
$gc = $_REQUEST[$key];
$val_C = $val;
break;
case "getD":
$gd = $_REQUEST[$key];
$val_D = $val;
break;
~
他のcaseが続く
~
}
}
$qqq =<<<__SSS__
SELECT * FROM table WHERE 1
AND ga0 <= val_A AND val_A < ga1
AND `colum_B` BETWEEN CURDATE() - INTERVAL gb YEAR AND CURDATE() - INTERVAL 1 DAY
AND gc <= val_C
AND gd <= val_D
AND val_E IN(ge)
ORDER BY field deskORasc LIMIT L1,L2;
__SSS__;
$sss = $ddd->prepare($qqq);
$sss->execute(array(
':ga0'=>$ga[0], ':ga1'=>$ga[1], ':val_A'=>$val_A,
':gb'=>$gb, ':val_B'=>$val_B,
':gc'=>$gc, ':val_C'=>$val_C,
':gd'=>$gd, ':val_D'=>$val_D,
':ge'=>$ge, ':val_E'=>$val_E,
~いろいろなものが続く~
':field'=>$field, ':deskORasc'=>$deskORasc, ':L1'=>0, ':L2'=>50
));
$rrr = $sss->fetchAll(PDO::FETCH_ASSOC);
No.1ベストアンサー
- 回答日時:
質問は何でしょうか?
ざっと見たところでは、
(1)
$_RESUEST[$key]が空文字列だったら処理をスキップしているのにそれを考慮してステートメントを組み立てていない
(2)
プレースホルダの記述がおかしい(プレースホルダになっていない)。
という点が気にはなりますが、いずれにしても$qqqやそれに引き渡す値をprintしてみればわかることだとは思います(それがデバッグですから)。
$_REQUEST[$key]があるだけ、それに合わせた処理をさせて、
必要なだけSQL文を組み立てていきたいです。
指摘してもらった(1)と(2)はこちらでオッケーですか?
$lll = array(
"getA"=>"mysql_colum_name_A",
"getB"=>"mysql_colum_name_B",
"getC"=>"mysql_colum_name_C",
"getD"=>"mysql_colum_name_D",
"getE"=>"mysql_colum_name_E"
);
$yyy = 'SELECT * FROM table WHERE 1';
foreach($lll as $key=>$val){
if(!isset($_REQUEST[$key]) or $_REQUEST[$key]==='') {$_REQUEST[$key]="";}
switch($key){
case "getA":
$ga = explode("+", $_REQUEST[$key]);
$yyy .= ' AND {$r[0]} <= {$val} AND {$val} < {$r[1]}';
break;
case "getB":
$yyy .= 'AND {$val} BETWEEN CURDATE() - INTERVAL {$_REQUEST[$key]} YEAR AND CURDATE() - INTERVAL 1 DAY';
break;
case "getC":
case "getD":
case "getE":
$yyy .= ' AND {$_REQUEST[$key]} <= {$val}';
break;
~
他のcaseが続く
~
}
}
$ddd = new PDO($host,$user,$pass);
$sss = $ddd->prepare($qqq);
$rrr = $sss->fetchAll(PDO::FETCH_ASSOC);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- Ruby vscode 文字化け 1 2022/05/21 19:17
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- Visual Basic(VBA) Worksheets メソッドは失敗しました。のエラー処理のやり方 4 2022/05/29 21:29
- その他(プログラミング・Web制作) ColabでのPytorchのエラー 1 2022/11/19 20:51
- 統計学 機械学習(最適化問題)のプログラムで、以下の2つの関数がどんな関数なのかご存知の方はおりますか? d 5 2022/06/23 00:35
- その他(プログラミング・Web制作) AndroidStudio 途中で終了する。 1 2023/04/26 11:21
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- JavaScript Javascript初心者|jQueryの.val()で値を取得し複数の要素を連結させる方法知りたい 2 2022/06/02 12:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでこのコード自体に意味は無...
-
PHPで連想配列のプルダウンメニ...
-
連想配列のキー値(連番)を基...
-
PHPの構文で間違えが分からない
-
foreachで上限回数指定方法また...
-
新大阪・梅田周辺でチェックア...
-
foreachとかの勝手な省略?
-
プログラミングのPythonのnoteb...
-
PHPのカッコ[ ]の使い方について
-
スカラーのベクトル微分
-
ヒアドキュメントの中のfor文
-
複数行のデータのPOST処理に関して
-
エラーメッセージ(無効な間接...
-
fgetsで取り込んだ文字をexplod...
-
forとかで連番の変数を一気に格...
-
foreachのなかで次のキーを参照...
-
String だと「 ByRef引数の型が...
-
fgetcsvでデータが何も表示され...
-
PHPで配列をPOSTデータで送った...
-
配列を回すとき、最後の要素だ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マッチング処理(1:N)
-
smartyのforeachの使い方
-
foreachで上限回数指定方法また...
-
多次元配列を、1次元の配列にす...
-
foreachの間にテーブルの<TR>を...
-
PHP、{}記号の意味
-
$_POST受信で必要項目のみを結...
-
3つの連想配列を交互に代入し...
-
VB.NET で 二次元のハッシュは...
-
PHP:ツリー構造をulとli要素に...
-
foreachで配列を、左から縦3列...
-
PHPの構文で間違えが分からない
-
PHPで連想配列のプルダウンメニ...
-
添え字が全て文字列のPHPの多次...
-
POSTで渡されるデータの数がわ...
-
テーブルデータ表示
-
Smartyでインクリメント
-
PHPで変数名にハイフンを使うに...
-
Delphi XEの警告文を消したい
-
配列から順位を算出したい
おすすめ情報