connection) || $new) { if($dsn != "") { $objDbConn = DB::connect($dsn, $options); $this->dsn = $dsn; } else { if(defined('DEFAULT_DSN')) { $objDbConn = DB::connect(DEFAULT_DSN, $options); $this->dsn = DEFAULT_DSN; } else { return; } } } $this->conn = $objDbConn; $this->error_mail_to = DB_ERROR_MAIL_TO; $this->error_mail_title = DB_ERROR_MAIL_SUBJECT; $this->err_disp = $err_disp; } // クエリの実行 function query($n ,$arr = "", $ignore_err = false){ // mysqlの場合にはビュー表を変換する if (DB_TYPE == "mysql") $n = sfChangeMySQL($n); if ( $arr ) { $result = $this->conn->query($n, $arr); } else { $result = $this->conn->query($n); } if ($this->conn->isError($result) && !$ignore_err){ $this->send_err_mail ($result, $n); } $this->result = $result; return $this->result; } // 一件のみ取得 function getOne($n, $arr = ""){ // mysqlの場合にはビュー表を変換する if (DB_TYPE == "mysql") $n = sfChangeMySQL($n); if ( $arr ) { $result = $this->conn->getOne($n, $arr); } else { $result = $this->conn->getOne($n); } if ($this->conn->isError($result)){ $this->send_err_mail ($result ,$n); } $this->result = $result; return $this->result; } function getRow($n, $arr = ""){ // mysqlの場合にはビュー表を変換する if (DB_TYPE == "mysql") $n = sfChangeMySQL($n); if ( $arr ) { $result = $this->conn->getRow($n, $arr); } else { $result = $this->conn->getRow($n); } if ($this->conn->isError($result)){ $this->send_err_mail ($result ,$n); } $this->result = $result; return $this->result; } // SELECT文の実行結果を全て取得 function getAll($n, $arr = ""){ // mysqlの場合にはビュー表を変換する if (DB_TYPE == "mysql") $n = sfChangeMySQL($n); if(PEAR::isError($this->conn)) { sfErrorHeader("DBへの接続に失敗しました。"); gfPrintLog("couldn't connect : " . $this->dsn); return 0; } if ( $arr ){ $result = $this->conn->getAll($n, $arr, DB_FETCHMODE_ASSOC); } else { $result = $this->conn->getAll($n, DB_FETCHMODE_ASSOC); } if ($this->conn->isError($result)){ $this->send_err_mail ($result, $n); } $this->result = $result; return $this->result; } function autoExecute($table_name, $fields_values, $sql_where = null){ if ( $sql_where ) { $result = $this->conn->autoExecute( $table_name, $fields_values, DB_AUTOQUERY_UPDATE, $sql_where); } else { $result = $this->conn->autoExecute( $table_name, $fields_values, DB_AUTOQUERY_INSERT); } if ($this->conn->isError($result)){ $this->send_err_mail ($result, $n); } $this->result = $result; return $this->result; } function prepare($n){ global $sql; $sql = $n; $result = $this->conn->prepare($n); $this->result = $result; return $this->result; } function execute($n, $obj){ global $sql; $sql = $n; $result = $this->conn->execute($n, $obj); $this->result = $result; return $this->result; } function reset(){ $this->conn->disconnect(); } function debug_print($result, $sql){ $this->send_err_mail($result, $sql); } function send_err_mail($result, $sql){ $url = ''; $errmsg = ''; if ($_SERVER['HTTPS'] == "on") { $url = "https://"; } else { $url = "http://"; } $url .= $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $errmsg = $url."\n\n"; $errmsg .= $sql . "\n"; $errmsg .= $result->message . "\n\n"; $errmsg .= $result->userinfo . "\n\n"; if ($this->err_disp && DEBUG_MODE === true) { print('
');
            print_r(htmlspecialchars($errmsg, ENT_QUOTES, CHAR_CODE));
            print('
'); } gfDebugLog($errmsg, DB_ERR_LOG_PATH); exit(); } } ?>