Changeset 21256 for branches/version-2_11-dev/data/class/SC_Query.php
- Timestamp:
- 2011/09/25 13:15:51 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/version-2_11-dev/data/class/SC_Query.php
r21254 r21256 35 35 36 36 var $instance; 37 var $option; 38 var $where; 37 var $option = ''; 38 var $where = ''; 39 var $arrWhereVal = array(); 39 40 var $conn; 40 var $groupby ;41 var $order ;41 var $groupby = ''; 42 var $order = ''; 42 43 var $force_run; 43 44 … … 82 83 $this->dbFactory = SC_DB_DBFactory_Ex::getInstance(); 83 84 $this->force_run = $force_run; 84 $this->where = "";85 $this->order = "";86 $this->groupby = "";87 $this->option = "";88 85 } 89 86 … … 101 98 $GLOBALS['_SC_Query_instance'] =& new SC_Query_Ex($dsn, $force_run, $new); 102 99 } 103 $GLOBALS['_SC_Query_instance']->where = ""; 104 $GLOBALS['_SC_Query_instance']->order = ""; 105 $GLOBALS['_SC_Query_instance']->groupby = ""; 106 $GLOBALS['_SC_Query_instance']->option = ""; 100 $GLOBALS['_SC_Query_instance']->where = ''; 101 $GLOBALS['_SC_Query_instance']->arrWhereVal = array(); 102 $GLOBALS['_SC_Query_instance']->order = ''; 103 $GLOBALS['_SC_Query_instance']->groupby = ''; 104 $GLOBALS['_SC_Query_instance']->option = ''; 107 105 return $GLOBALS['_SC_Query_instance']; 108 106 } … … 126 124 * @param string $table テーブル名 127 125 * @param string $where where句 128 * @param array $arr val プレースホルダ126 * @param array $arrWhereVal プレースホルダ 129 127 * @return integer 件数 130 128 */ 131 function count($table, $where = "", $arr val = array()) {129 function count($table, $where = "", $arrWhereVal = array()) { 132 130 if(strlen($where) <= 0) { 133 131 $sqlse = "SELECT COUNT(*) FROM $table"; … … 136 134 } 137 135 $sqlse = $this->dbFactory->sfChangeMySQL($sqlse); 138 return $this->getOne($sqlse, $arr val);136 return $this->getOne($sqlse, $arrWhereVal); 139 137 } 140 138 … … 145 143 * @param string $table テーブル名 146 144 * @param string $where WHERE句 147 * @param array $arr val プレースホルダ145 * @param array $arrWhereVal プレースホルダ 148 146 * @param integer $fetchmode 使用するフェッチモード。デフォルトは MDB2_FETCHMODE_ASSOC。 149 147 * @return array|null 150 148 */ 151 function select($col, $table, $where = "", $arr val = array(), $fetchmode = MDB2_FETCHMODE_ASSOC) {152 $sqlse = $this->getSql($col, $table, $where );153 return $this->getAll($sqlse, $arr val, $fetchmode);149 function select($col, $table, $where = "", $arrWhereVal = array(), $fetchmode = MDB2_FETCHMODE_ASSOC) { 150 $sqlse = $this->getSql($col, $table, $where, $arrWhereVal); 151 return $this->getAll($sqlse, $arrWhereVal, $fetchmode); 154 152 } 155 153 … … 279 277 * 構築した SELECT 文を取得する. 280 278 * 279 * クラス変数から WHERE 句を組み立てる場合、$arrWhereVal を経由してプレースホルダもクラス変数のもので上書きする。 281 280 * @param string $col SELECT 文に含めるカラム名 282 281 * @param string $table SELECT 文に含めるテーブル名 283 282 * @param string $where SELECT 文に含める WHERE 句 283 * @param mixed $arrWhereVal プレースホルダ(参照) 284 284 * @return string 構築済みの SELECT 文 285 285 */ 286 function getSql($col, $table, $where = '' ) {286 function getSql($col, $table, $where = '', &$arrWhereVal = null) { 287 287 $sqlse = "SELECT $col FROM $table"; 288 288 … … 292 292 } elseif (strlen($this->where) >= 1) { 293 293 $sqlse .= " WHERE " . $this->where; 294 if (empty($arrWhereVal)) { 295 $arrWhereVal = $this->arrWhereVal; 296 } 294 297 } 295 298 … … 388 391 * この関数で設定した値は SC_Query::getSql() で使用されます. 389 392 * 390 * @param string $str WHERE 句に付与する文字列 393 * @param string $where WHERE 句に付与する文字列 394 * @param mixed $arrWhereVal プレースホルダ 391 395 * @return SC_Query 自分自身のインスタンス 392 396 */ 393 function setWhere($str) { 394 $this->where = $str; 397 function setWhere($where = '', $arrWhereVal = array()) { 398 $this->where = $where; 399 $this->arrWhereVal = $arrWhereVal; 395 400 return $this; 396 401 } … … 489 494 * @param array $sqlval array('カラム名' => '値',...)の連想配列 490 495 * @param string $where WHERE句 491 * @param array $arr ValInWHERE句用のプレースホルダ配列 (従来は追加カラム用も兼ねていた)496 * @param array $arrWhereVal WHERE句用のプレースホルダ配列 (従来は追加カラム用も兼ねていた) 492 497 * @param array $arrRawSql 追加カラム 493 498 * @param array $arrRawSqlVal 追加カラム用のプレースホルダ配列 494 499 * @return 495 500 */ 496 function update($table, $sqlval, $where = "", $arr ValIn= array(), $arrRawSql = array(), $arrRawSqlVal = array()) {501 function update($table, $sqlval, $where = "", $arrWhereVal = array(), $arrRawSql = array(), $arrRawSqlVal = array()) { 497 502 $arrCol = array(); 498 503 $arrVal = array(); … … 528 533 $strcol = implode(', ', $arrCol); 529 534 530 if (is_array($arr ValIn)) { // 旧版との互換用535 if (is_array($arrWhereVal)) { // 旧版との互換用 531 536 // プレースホルダー用に配列を追加 532 $arrVal = array_merge($arrVal, $arr ValIn);537 $arrVal = array_merge($arrVal, $arrWhereVal); 533 538 } 534 539 … … 548 553 * @param string $col カラム名 549 554 * @param string $where 付与する WHERE 句 550 * @param array $arrval ブレースホルダに挿入する値555 * @param array $arrval プレースホルダに挿入する値 551 556 * @return integer MAX文の実行結果 552 557 */ … … 562 567 * @param string $col カラム名 563 568 * @param string $where 付与する WHERE 句 564 * @param array $arrval ブレースホルダに挿入する値569 * @param array $arrval プレースホルダに挿入する値 565 570 * @return integer MIN文の実行結果 566 571 */ … … 576 581 * @param string $col カラム名 577 582 * @param string $where 付与する WHERE 句 578 * @param array $arr val ブレースホルダに挿入する値583 * @param array $arrWhereVal プレースホルダに挿入する値 579 584 * @return mixed SQL の実行結果 580 585 */ 581 function get($col, $table, $where = "", $arr val = array()) {582 $sqlse = $this->getSql($col, $table, $where );586 function get($col, $table, $where = "", $arrWhereVal = array()) { 587 $sqlse = $this->getSql($col, $table, $where, $arrWhereVal); 583 588 // SQL文の実行 584 $ret = $this->getOne($sqlse, $arr val);589 $ret = $this->getOne($sqlse, $arrWhereVal); 585 590 return $ret; 586 591 } … … 590 595 * 591 596 * @param string $sql 実行する SQL 592 * @param array $arrval ブレースホルダに挿入する値597 * @param array $arrval プレースホルダに挿入する値 593 598 * @return mixed SQL の実行結果 594 599 */ … … 616 621 * @param string $col カラム名 617 622 * @param string $where WHERE句 618 * @param array $arr Val プレースホルダ配列623 * @param array $arrWhereVal プレースホルダ配列 619 624 * @param integer $fetchmode 使用するフェッチモード。デフォルトは MDB2_FETCHMODE_ASSOC。 620 625 * @return array array('カラム名' => '値', ...)の連想配列 621 626 */ 622 function getRow($col, $table, $where = "", $arr Val = array(), $fetchmode = MDB2_FETCHMODE_ASSOC) {623 624 $sql = $this->getSql($col, $table, $where );627 function getRow($col, $table, $where = "", $arrWhereVal = array(), $fetchmode = MDB2_FETCHMODE_ASSOC) { 628 629 $sql = $this->getSql($col, $table, $where, $arrWhereVal); 625 630 $sql = $this->dbFactory->sfChangeMySQL($sql); 626 631 … … 630 635 } 631 636 632 $affected =& $this->execute($sth, $arr Val);637 $affected =& $this->execute($sth, $arrWhereVal); 633 638 if (PEAR::isError($affected) && $this->force_run) { 634 639 return; … … 639 644 640 645 /** 641 * SELECT 文の実行結果を 1 行のみ取得する.646 * SELECT 文の実行結果を 1列のみ取得する. 642 647 * 643 648 * @param string $table テーブル名 644 649 * @param string $col カラム名 645 650 * @param string $where 付与する WHERE 句 646 * @param array $arr val ブレースホルダに挿入する値651 * @param array $arrWhereVal プレースホルダに挿入する値 647 652 * @return array SQL の実行結果の配列 648 653 */ 649 function getCol($col, $table, $where = "", $arr val = array()) {650 $sql = $this->getSql($col, $table, $where );654 function getCol($col, $table, $where = "", $arrWhereVal = array()) { 655 $sql = $this->getSql($col, $table, $where, $arrWhereVal); 651 656 $sql = $this->dbFactory->sfChangeMySQL($sql); 652 657 … … 656 661 } 657 662 658 $affected =& $this->execute($sth, $arr val);663 $affected =& $this->execute($sth, $arrWhereVal); 659 664 if (PEAR::isError($affected) && $this->force_run) { 660 665 return; … … 722 727 * 723 728 * @param string $n 実行する SQL 文 724 * @param array $arr ブレースホルダに挿入する値729 * @param array $arr プレースホルダに挿入する値 725 730 * @param boolean $ignore_err MDB2切替で無効化されている (エラーが発生しても処理を続行する場合 true) 726 731 * @param mixed $types プレースホルダの型指定 デフォルトnull = string … … 830 835 * 831 836 * TODO MDB2 に対応するための暫定的な措置. 832 * ブレースホルダが使用できない実装があるため.837 * プレースホルダが使用できない実装があるため. 833 838 * 本来であれば, MDB2::prepare() を適切に使用するべき 834 839 * … … 845 850 * 846 851 * @param string $table テーブル名 847 * @param array ブレースホルダの連想配列852 * @param array プレースホルダの連想配列 848 853 * @return array テーブルに存在する列のみ抽出した連想配列 849 854 */ … … 885 890 * @access private 886 891 * @param MDB2_Statement_Common プリペアドステートメントインスタンス 887 * @param array $arrVal ブレースホルダに挿入する配列892 * @param array $arrVal プレースホルダに挿入する配列 888 893 * @return MDB2_Result 結果セットのインスタンス 889 894 */ 890 895 function execute(&$sth, $arrVal = array()) { 891 896 $timeStart = SC_Utils_Ex::sfMicrotimeFloat(); 892 $affected =& $sth->execute( $arrVal);897 $affected =& $sth->execute((array)$arrVal); 893 898 894 899 // 一定以上時間かかったSQLの場合、ログ出力する。 … … 947 952 * 948 953 * @param string $n 実行する SQL 文 949 * @param array $arr ブレースホルダに挿入する値954 * @param array $arr プレースホルダに挿入する値 950 955 * @param boolean エラーが発生しても処理を続行する場合 true 951 956 * @param mixed $types プレースホルダの型指定 デフォルトnull = string
Note: See TracChangeset
for help on using the changeset viewer.