source: branches/dev/data/class/SC_DbConn.php @ 15964

Revision 15964, 5.1 KB checked in by kakinaka, 15 years ago (diff)
Line 
1<?php
2/*
3 * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
4 *
5 * http://www.lockon.co.jp/
6 */
7
8$current_dir = realpath(dirname(__FILE__));
9require_once($current_dir . "/../module/DB.php");
10require_once($current_dir . "/../module/MDB2.php");
11require_once($current_dir . "/../module/MDB2/Extended.php");
12
13$objDbConn = "";
14$objDbConnMDB2 = "";
15
16class SC_DbConn{
17
18    var $conn;
19    var $conn_mdb2;
20    var $result;
21    var $includePath;
22    var $error_mail_to;
23    var $error_mail_title;
24    var $dsn;
25    var $err_disp = true;
26   
27    // ¥³¥ó¥¹¥È¥é¥¯¥¿
28    function SC_DbConn($dsn = "", $err_disp = true, $new = false){
29        global $objDbConn;
30       
31        // Debug¥â¡¼¥É»ØÄê
32        $options['debug'] = PEAR_DB_DEBUG;
33        // ´û¤ËÀܳ¤µ¤ì¤Æ¤¤¤Ê¤¤¤«¡¢¿·µ¬ÀܳÍ×˾¤Î¾ì¹ç¤ÏÀܳ¤¹¤ë¡£
34        if(!isset($objDbConn->connection) || $new) {
35            if($dsn != "") {
36                $objDbConn = DB::connect($dsn, $options);
37                $objDbConnMDB2 = MDB2::factory($dsn, $options);
38                $objDbConnMDB2 ->loadModule('Extended', null, false);
39                $this->dsn = $dsn;
40            } else {
41                if(defined('DEFAULT_DSN')) {
42                    $objDbConn = DB::connect(DEFAULT_DSN, $options);
43                    $objDbConnMDB2 = MDB2::factory(DEFAULT_DSN, $options);
44                    $objDbConnMDB2 ->loadModule('Extended', null, false);
45                    $this->dsn = DEFAULT_DSN;
46                } else {
47                    return;
48                }
49            }
50        }
51       
52        $this->conn = $objDbConn;
53        $this->conn_mdb2 = $objDbConnMDB2;
54        $this->error_mail_to = DB_ERROR_MAIL_TO;
55        $this->error_mail_title = DB_ERROR_MAIL_SUBJECT;
56        $this->err_disp = $err_disp;
57       
58        $this->conn_mdb2->setFetchMode(MDB2_FETCHMODE_ASSOC);
59    }
60   
61    // ¥¯¥¨¥ê¤Î¼Â¹Ô
62    function query($n ,$arr = "", $ignore_err = false){
63        // mysql¤Î¾ì¹ç¤Ë¤Ï¥Ó¥å¡¼É½¤òÊÑ´¹¤¹¤ë
64        if (DB_TYPE == "mysql") $n = sfChangeMySQL($n);
65
66        if ( $arr ) {
67            $result = $this->conn->query($n, $arr);
68        } else {
69            $result = $this->conn->query($n);
70        }
71   
72        if ($this->conn->isError($result) && !$ignore_err){
73            $this->send_err_mail ($result, $n);
74        }
75       
76        $this->result = $result;
77        return $this->result;
78    }
79
80    // °ì·ï¤Î¤ß¼èÆÀ
81    function getOne($n, $arr = ""){
82       
83        // mysql¤Î¾ì¹ç¤Ë¤Ï¥Ó¥å¡¼É½¤òÊÑ´¹¤¹¤ë
84        if (DB_TYPE == "mysql") $n = sfChangeMySQL($n);
85       
86        if ( $arr ) {
87            $result = $this->conn->getOne($n, $arr);
88        } else {
89            $result = $this->conn->getOne($n);
90        }       
91        if ($this->conn->isError($result)){
92            $this->send_err_mail ($result ,$n);
93        }
94        $this->result = $result;
95       
96        return $this->result;
97    }
98   
99    function getRow($n, $arr = ""){
100
101        // mysql¤Î¾ì¹ç¤Ë¤Ï¥Ó¥å¡¼É½¤òÊÑ´¹¤¹¤ë
102        if (DB_TYPE == "mysql") $n = sfChangeMySQL($n);
103
104        if ( $arr ) {
105            $result = $this->conn->getRow($n, $arr);
106        } else {
107            $result = $this->conn->getRow($n);
108        }       
109        if ($this->conn->isError($result)){
110            $this->send_err_mail ($result ,$n);
111        }
112        $this->result = $result;
113        return $this->result;
114    }
115
116    // SELECTʸ¤Î¼Â¹Ô·ë²Ì¤òÁ´¤Æ¼èÆÀ
117    function getAll($n, $arr = ""){
118
119        // mysql¤Î¾ì¹ç¤Ë¤Ï¥Ó¥å¡¼É½¤òÊÑ´¹¤¹¤ë
120        if (DB_TYPE == "mysql") $n = sfChangeMySQL($n);
121       
122        if(PEAR::isError($this->conn)) {
123            sfErrorHeader("DB¤Ø¤ÎÀܳ¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£");
124            gfPrintLog("couldn't connect : " . $this->dsn);
125            return 0;
126        }
127
128        if ( $arr ){
129            //$result = $this->conn->getAll($n, $arr, DB_FETCHMODE_ASSOC);
130            $result = $this->conn_mdb2->extended->getAll($n, null, $arr);
131        } else {
132            //$result = $this->conn->getAll($n, DB_FETCHMODE_ASSOC);
133            $result = $this->conn_mdb2->extended->getAll($n, null);
134        }
135       
136        if ($this->conn->isError($result)){
137            $this->send_err_mail ($result, $n);
138        }
139        $this->result = $result;
140       
141        return $this->result;
142    }   
143   
144    function autoExecute($table_name, $fields_values, $sql_where = null){
145   
146        if ( $sql_where ) {
147            $result = $this->conn->autoExecute( $table_name, $fields_values, DB_AUTOQUERY_UPDATE, $sql_where);
148        } else {
149            $result = $this->conn->autoExecute( $table_name, $fields_values, DB_AUTOQUERY_INSERT);
150        }
151       
152        if ($this->conn->isError($result)){
153            $this->send_err_mail ($result, $n);
154        }
155        $this->result = $result;
156        return $this->result;
157    }
158   
159   
160    function prepare($n){
161        global $sql;
162        $sql = $n;     
163        $result = $this->conn->prepare($n);
164        $this->result = $result;
165        return $this->result;
166    }
167   
168    function execute($n, $obj){
169        global $sql;
170        $sql = $n;
171        $result = $this->conn->execute($n, $obj);
172        $this->result = $result;
173        return $this->result;
174    }   
175   
176    function reset(){
177        $this->conn->disconnect();
178    }
179
180    function debug_print($result, $sql){
181        $this->send_err_mail($result, $sql);
182    }
183   
184    function send_err_mail($result, $sql){
185        $url = '';
186        $errmsg = '';
187       
188        if ($_SERVER['HTTPS'] == "on") {
189            $url = "https://";
190        } else {
191            $url = "http://";
192        }
193        $url .= $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
194       
195        $errmsg  = $url."\n\n";
196        $errmsg .= $sql . "\n";
197        $errmsg .= $result->message . "\n\n";
198        $errmsg .= $result->userinfo . "\n\n";
199       
200        if ($this->err_disp && DEBUG_MODE === true) {
201            print('<pre>');
202            print_r(htmlspecialchars($errmsg, ENT_QUOTES, CHAR_CODE));
203            print('</pre>');
204        }
205       
206        gfDebugLog($errmsg, DB_ERR_LOG_PATH);
207       
208        exit();
209    }
210}
211
212?>
Note: See TracBrowser for help on using the repository browser.