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

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