分享一个PHP ORACLE 类
2016-07-07 15:00 来源:www.chinab4c.com 作者:ecshop专家
<?php if (!defined('IN_ECS')) { die('Hacking attempt'); } class DB_OracleOCI { public $Debug = 0; public $sqoe = 1; public $DBDatabase = "(DESCRIPTION=(ADDRESS=(PROTOCOL =TCP)(HOST=192.168.1.100)(PORT = 1521))(CONNECT_DATA =(SID=GZCMCC)))"; public $DBUser = "GMCCLFDH"; public $DBPassword = "GMCCLFDH"; public $Persistent = false; public $Uppercase = false; public $Record = array(); public $Row; public $Binds = array(); public $Link_ID = 0; public $Query_ID = 0; public $Connected = false; var $queryCount = 0; var $queryTime= ''; var $queryLog= array(); public $Encoding = "UTF8"; public $Error = ""; function DB_Sql($query = "") { } function try_connect() { $this->Query_ID = 0; if ($this->Persistent) $this->Link_ID = @OCIplogon("$this->DBUser", "$this->DBPassword", "$this->DBDatabase"); else $this->Link_ID = @OCIlogon("$this->DBUser", "$this->DBPassword", "$this->DBDatabase"); $this->Connected = $this->Link_ID ? true : false; return $this->Connected; } function connect() { if (!$this->Connected) { $this->Query_ID = 0; if ($this->Debug) { printf("<br>Connecting to $this->DBDatabase...<br> "); } if ($this->Persistent) $this->Link_ID = OCIplogon("$this->DBUser", "$this->DBPassword", "$this->DBDatabase", $this->Encoding); else $this->Link_ID = OCIlogon("$this->DBUser", "$this->DBPassword", "$this->DBDatabase", $this->Encoding); if (!$this->Link_ID) { $this->Error = OCIError(!$this->Link_ID); $this->Halt("Cannot connect to Database: " . $this->Error["message"]); return 0; } if ($this->Debug) { printf("<br>Obtained the Link_ID: $this->Link_ID<br> "); } $this->Connected = true; } } function bind($parameter_name, $parameter_value, $parameter_length = -1, $parameter_type = 0) { if ($parameter_length == -1 && $parameter_type == 0) $parameter_length = strlen($parameter_value); $this->Binds[$parameter_name] = array($parameter_value, $parameter_length, $parameter_type); } function query($Query_String) { if ($Query_String == "") return 0; $this->connect(); $this->Query_ID = OCIParse($this->Link_ID, $Query_String); if (!$this->Query_ID) { $this->Error = OCIError($this->Query_ID); } else { if (sizeof($this->Binds) > 0) { foreach ($this->Binds as $parameter_name => $parameter_values) { if ($parameter_values[2] == OCI_B_CURSOR) $this->Binds[$parameter_name][0] = OCINewCursor($this->Link_ID); if ($parameter_values[2] == 0) OCIBindByName($this->Query_ID, ":" . $parameter_name, $this->Binds[$parameter_name][0], $parameter_values[1]); else OCIBindByName($this->Query_ID, ":" . $parameter_name, $this->Binds[$parameter_name][0], $parameter_values[1], $parameter_values[2]); } } OCIExecute($this->Query_ID); $this->Error = OCIError($this->Query_ID); } $this->Row = 0; if ($this->Debug) { printf("Debug: query = %s<br> ", $Query_String); } if ($this->Error["code"] != 1403 && $this->Error["code"] != 0 && $this->sqoe) echo "<BR><FONT color=red><B>" . $this->Error["message"] . "<BR>Query :\"$Query_String\"</B></FONT>"; if (sizeof($this->Binds) > 0) { $bi = 0; foreach ($this->Binds as $parameter_name => $parameter_values) { if ($parameter_values[2] == OCI_B_CURSOR) { OCIExecute($this->Binds[$parameter_name][0]); $this->Error = OCIError($this->Binds[$parameter_name][0]); $this->Query_ID = $this->Binds[$parameter_name][0]; } $this->Record[$parameter_name] = $parameter_values[0]; $this->Record[$bi++] = $parameter_values[0]; } $this->Binds = array(); } if ($this->queryCount++ <= 99) { $this->queryLog[] = $Query_String; } if ($this->queryTime == '') { if (PHP_VERSION >= '5.0.0') { $this->queryTime = microtime(true); } else { $this->queryTime = microtime(); } } return $this->Query_ID; } function next_record() { if (!$this->Query_ID) return 0; if (0 == @OCIFetchInto($this->Query_ID, $result, OCI_ASSOC + OCI_RETURN_NULLS)) { if ($this->Debug) { printf("<br>ID: %d,Rows: %d<br> ", $this->Link_ID, $this->num_rows()); } $this->Row += 1; $errno = OCIError($this->Query_ID); if (1403 == $errno) { # 1043 means no more records found $this->Error = ""; $this->disconnect(); $stat = 0; } else { $this->Error = OCIError($this->Query_ID); if ($this->Debug) { printf("<br>Error: %s", $this->Error["message"]); } $stat = 0; } } else { for ($ix = 1; $ix <= OCINumcols($this->Query_ID); $ix++) { $col = OCIColumnname($this->Query_ID, $ix); $colreturn = $col; $this->Record["$colreturn"] = $result["$col"]; $this->Record[$ix - 1] = $result["$col"]; if ($this->Debug) echo "<b>[$col]</b>:" . $result["$col"] . "<br> "; } $stat = 1; } return $stat; } function seek($pos) { $i = 0; while ($i < $pos && @OCIFetchInto($this->Query_ID, $result, OCI_ASSOC + OCI_RETURN_NULLS)) { $i++; } $this->Row += $i; return true; } function metadata($table, $full = false) { $count = 0; $id = 0; $res = array(); $this->connect(); $this->query("SELECT T.table_name,T.column_name,T.data_type," . "T.data_length,T.data_precision,T.data_scale,T.nullable," . "T.char_col_decl_length,I.index_name" . " FROM ALL_TAB_COLUMNS T,ALL_IND_COLUMNS I" . " WHERE T.column_name=I.column_name (+)" . " AND T.table_name=I.table_name (+)" . " AND T.table_name=UPPER('$table') ORDER BY T.column_id"); $i = 0; while ($this->next_record()) { $res[$i]["table"] = $this->Record[table_name]; $res[$i]["name"] = strtolower($this->Record[column_name]); $res[$i]["type"] = $this->Record[data_type]; $res[$i]["len"] = $this->Record[data_length]; if ($this->Record[index_name]) $res[$i]["flags"] = "INDEX "; $res[$i]["flags"] .= ($this->Record[nullable] == 'N') ? '' : 'NOT NULL'; $res[$i]["format"] = (int)$this->Record[data_precision] . "," . (int)$this-> Record[data_scale]; if ("0,0" == $res[$i]["format"]) $res[$i]["format"] = ''; $res[$i]["index"] = $this->Record[index_name]; $res[$i]["chars"] = $this->Record[char_col_decl_length]; if ($full) { $j = $res[$i]["name"]; $res["meta"][$j] = $i; $res["meta"][strtoupper($j)] = $i; } if ($full) $res["meta"][$res[$i]["name"]] = $i; $i++; } if ($full) $res["num_fields"] = $i; #$this->disconnect(); return $res; } function affected_rows() { return $this->num_rows(); } function num_rows() { return OCIrowcount($this->Query_ID); } function num_fields() { return OCINumcols($this->Query_ID); } function nf() { return $this->num_rows(); } function np() { print $this->num_rows(); } function f($Name) { if ($this->Uppercase) $Name = strtoupper($Name); if (array_key_exists($Name, $this->Record) && is_object($this->Record[$Name])) { return $this->Record[$Name]->load(); } else { return $this->Record && array_key_exists($Name, $this->Record) ? $this->Record[$Name] :""; } } function p($Name) { if ($this->Uppercase) $Name = strtoupper($Name); print $this->f($Name); } |
回答:
可以把ECSHOP 转为ORACLE 经过我的潜心研究 终于转成功了 |
php这样成熟的 数据库类库多得是 最简单的 就是 :ADOdb 直接支持 :Access, MySQL, PostgreSQL, MS SQL, Oracle |
我们也准备把ecshop的数据库转到oracle,能提供下思路吗?谢谢 |
最近更新
常用插件
- ecshop分类批量扩展插件
ecshop分类批量扩展插件,这个插件是ecshop插件里面比较核心的插件。我们...
- ecshop2.7.1打印发货单插件
ecshop2.7.1打印发货单插件介绍:ecshop2.7.1和以前的ecshop版本不一样,ecs...
- ecshop二次开发详细页面生
插件介绍: ECSHOP系统,在很多时候,很多商品没有人购买,不但购买的人...
- ecshop商品分类名称增加样
ecshop插件介绍:本插件可以方便在后台管理,为ecshop商品分类名称增加样...
- ecshop二次商品订购人信息
ecshop二次商品订购人信息填写插件,有时候给朋友送花,或者是送礼品的...
ecshop热门问答
ecshop热门资料
ecshop弹出菜单
ecshopmacys经典
ecshop中止
ecshop字符串长度
ecshop公告栏设置
ecshop用户名称
ecshop定制模板
ecshop时尚安全套
ecshop公布
ecshop求购
ecshop路劲问题
ecshop惠價
ecshop板块
ecshop会员注册项设置
ecshop意思
ecshop系统分类
ecshop406
ecshop什么东西
ecshop正文
ecshop简单重写
ecshop批发申请
rabbitmq持久化
ecshop订单红包
ecshop电话机
ecshop缩微
ecshopnowrap
ecshop传输
ecshopiamjs
ecshop手机登陆
ecshop母婴