PHP链接oracle的函数



P> ※db_logon 开启数据库连接
※db_query 通用select
※db_change 数据库改变通用(insert,delete,update)
※db_insert insert,直接db_change
※db_delete delete,直接db_change
※db_update update,直接db_change
※db_commit 事务递交
※db_rollback 事务回退
※db_logoff 断开数据库连接

Class c_ora_db
{

变量定义

var $C_user = \"\"; 数据库用户名
var $C_passwd = \"\"; 数据库口令
var $C_db = \"\"; 数据库名
var $I_linkID = 0; 连线句柄
var $I_stmtID = 0; 查询句柄
var $color =\"\"; 全局颜色


名:db_logon
作 用:开启数据库连接
参 数:无
返回值:连线句柄(整型)
备 注:无

function db_logon
{
$this->I_linkID = @OCILogon($this->C_user,$this->C_passwd,$this->C_db);
($this->I_linkID 0){AlertExit(\'数据库链接失败请和DBA联系!\');}
$this->I_linkID;
}


名:db_query($C_sql,$A_=\"\",$I_start=-1,$I_end=-1)
作 用:select
参 数:$C_sql sql语句
$A_ 需绑定字段
$I_start 开始取记录 -1则取出查询所有记录
$I_end 结束取纪录
返回值: 2维($A_rs)
备 注:通过数字0,1,2....可访问对应字段值; 或通过查询字段名也可访问对应字段
如通过$A_rs[0][0]或$A_rs[0][\'NAME\']或$A_rs[0][\'name\']都可访问首条记录NAME字段
$I_start,$I_end是配合分页使用参数

function db_query($C_sql,$A_=\"\",$I_start=-1,$I_end=-1)
{
(!$C_sql){AlertExit(\"参数不全!\");}检查参数
连接检测
($this->I_linkID 0){AlertExit(\'数据库链接失败请和DBA联系!\');}
格式检测
$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);
(!$this -> I_stmtID){AlertExit(\' sql格式出错!请和员联系\');}
如果没指定绑定字段则从SQL语句中去取
($A_\"\")
{
$A_Cur = explode(\"select\",$C_sql);
$A_Cur = explode(\"from\",$A_Cur[1]);
$A_ = explode(\",\",$A_Cur[0]);
}
绑定数据库表字段
(gettype($A_) \".gif' />\") 查询列是
{
for($i=0;$i<count($A_);$i)
{
$A__up[$i] = trim(strtoupper($A_[$i])); 大写并去除空格
}
for($i=0;$i<count($A__up);$i)
{
OCIDefineByName($this -> I_stmtID,\"$A__up[$i]\",&$$A_[$i]); 绑定
}
}
(trim($A_) <> \"\") 查询列只有
{
$A__up = trim(strtoupper($A_));
OCIDefineByName($this -> I_stmtID,\"$A__up\",&$$A_);
}
执行绑定好SQL语句
(!OCIExecute($this -> I_stmtID))
{
echo \"<font color=red><b>执行出错:</b></font>SQL Error:<font color=red>$C_sql</font><br>\";
false;
}
$lower = 0; 返回 2维维下标控制变量
$cnt = 0; 开始取数标识
取记录
while (OCIFetchInto($this -> I_stmtID,&$cur,OCI_ASSOC))
{
取查询出来所有记录
($I_start -1)
{
(gettype($A_) \".gif' />\") 查询列是
{
for ($i=0;$i<count($A_);$i)
{
($cur[$A__up[$i]] <> $$A_[$i])
{
$$A_[$i] = $cur[$A__up[$i]];
}
$A_rs[$lower][$i] = $$A_[$i]; 用数字访问
$A_rs[$lower][$A_[$i]] = $$A_[$i]; 用小些访问
$A_rs[$lower][$A__up[$i]] = $$A_[$i]; 用大写访问
}
}
(trim($A_) <> \"\") 查询列只有
{
($cur[$A__up] <> $$A_)
{
$$A_ = $cur[$A__up];
}
$A_rs[$lower][0] = $$A_; 用数字访问
$A_rs[$lower][$A_] = $$A_; 用小写访问
$A_rs[$lower][$A__up] = $$A_; 用大些访问
}
$lower; 下标加
}
取出指定记录(配合分页使用)
($I_start <> -1)
{
($cnt >= $I_start)
{
$cnt;
($I_end - $I_start <> 0)
{
$I_end--;
(gettype($A_) \".gif' />\")
{
for($i=0;$i<count($A__up);$i)
{
($cur[$A__up[$i]] <> $$A_[$i])
{
$$A_[$i] = $cur[$A__up[$i]];
}
$A_rs[$lower][$i] = $$A_[$i]; 用数字访问
$A_rs[$lower][$A_[$i]] = $$A_[$i]; 用小些访问
$A_rs[$lower][$A__up[$i]] = $$A_[$i]; 用大写访问
}
}(trim($A_) <> \"\")
{
($cur[$A__up] <> $$A_)
{
$$A_ = $cur[$A__up];
}
$A_rs[$lower][0] = $$A_; 用数字访问
$A_rs[$lower][$A_] = $$A_; 用小些访问
$A_rs[$lower][$A__up] = $$A_; 用大写访问
}
$lower;
}
{
; 如果$I_end-$I_start=0 表示取完记录并跳出while循环
}
}
{
$cnt; 如果$cnt<$I_start,$cnt
}
}
} while结束
释放句柄并返回查询数据(个 2维)
OCIFreestatement($this -> I_stmtID);
$A_rs;


} function结束


名:db_change($C_sql,$A_bind)
作 用:db change
参 数:$C_sql sql语句
$A_bind 需绑定字段
返回值:布尔值
备 注:insert,delete,update通用

function db_change($C_sql,$A_bind=\"\")
{
(!$C_sql){AlertExit(\"参数不全!\");}检查参数
连接检测
($this -> I_linkID\"\"){ AlertExit(\"我们数据库正忙请稍后再连接!\");}
格式检测
$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);
(!$this -> I_stmtID){AlertExit(\' sql格式出错!请和员联系\');}
绑定
(gettype($A_bind) \".gif' />\")
{
for($i=0;$i<count($A_bind);$i)
{
global $$A_bind[$i];
$$A_bind[$i] = StripSlashes($$A_bind[$i]); 去掉反斜线字元
$$A_bind[$i] = str_replace(\"<?\",\"< ?\",$$A_bind[$i]); 过滤掉PHP标示
}
for($i=0;$i<count($A_bind);$i){
OCIBindByName($this -> I_stmtID, \":$A_bind[$i]\", &$$A_bind[$i], -1); 绑定
}
}
(trim($A_bind) <> \"\") 不是
{
global $$A_bind;
$$A_bind = StripSlashes($$A_bind);
$$A_bind = str_replace(\"<?\",\"< ?\",$$A_bind); 过滤掉PHP标示
OCIBindByName($this -> I_stmtID, \":$arrBind\", &$$A_bind, -1);
}
执行并检测是否成功
(!OCIExecute($this -> I_stmtID,OCI_DEFAULT))
{
echo \"<font color=red><b>执行出错:</b></font>SQL Error:<font color=red>$C_sql</font><br>\";
false;
}
/*传回受影响行数
global $I_changenum;
$I_changenum = OCINumrows($this -> I_stmtID);*/
释放句柄传回值
OCIFreeStatement($this -> I_stmtID);
true;
}


名:db_delete($C_sql)
作 用:delete
参 数:C_sql sql语句
返回值:布尔值
备 注:该只是为了使用直观,本质db_change

function db_delete($C_sql)
{
$this -> db_change($C_sql);
}


名:db_insert($C_sql,A_bind)
作 用:insert
参 数:C_sql sql语句
A_bind 绑定
返回值:布尔值
备 注:该只是为了使用直观,本质db_change

function db_insert($C_sql,$A_bind=\"\")
{
$this -> db_change($C_sql,$A_bind);
}


名:db_update($C_sql,A_bind)
作 用:update
参 数:C_sql sql语句
A_bind 绑定
返回值:布尔值
备 注:该只是为了使用直观,本质db_change

function db_update($C_sql,$A_bind=\"\")
{
$this -> db_change($C_sql,$A_bind);
}

名:db_commit
作 用:事务递交
参 数:无
返回值:布尔值
备 注:无
function db_commit
{
(OCICommit($this->I_linkID));
}
名:db_rollback
作 用:事务回退
参 数:无
返回值:布尔值
备 注:无
function db_rollback
{
(OCIRollback($this->I_linkID));
}
名:db_logoff
作 用:断开数据库连接
参 数:无
返回值:布尔值
备 注:无
function db_logoff
{
(OCILogoff($this->I_linkID));
}

※db_logon 开启数据库连接
※db_query 通用select
※db_change 数据库改变通用(insert,delete,update)
※db_insert insert,直接db_change
※db_delete delete,直接db_change
※db_update update,直接db_change
※db_commit 事务递交
※db_rollback 事务回退
※db_logoff 断开数据库连接

Class c_ora_db
{

变量定义

var $C_user = \"\"; 数据库用户名
var $C_passwd = \"\"; 数据库口令
var $C_db = \"\"; 数据库名
var $I_linkID = 0; 连线句柄
var $I_stmtID = 0; 查询句柄
var $color =\"\"; 全局颜色


名:db_logon
作 用:开启数据库连接
参 数:无
返回值:连线句柄(整型)
备 注:无

function db_logon
{
$this->I_linkID = @OCILogon($this->C_user,$this->C_passwd,$this->C_db);
($this->I_linkID 0){AlertExit(\'数据库链接失败请和DBA联系!\');}
$this->I_linkID;
}


名:db_query($C_sql,$A_=\"\",$I_start=-1,$I_end=-1)
作 用:select
参 数:$C_sql sql语句
$A_ 需绑定字段
$I_start 开始取记录 -1则取出查询所有记录
$I_end 结束取纪录
返回值: 2维($A_rs)
备 注:通过数字0,1,2....可访问对应字段值; 或通过查询字段名也可访问对应字段
如通过$A_rs[0][0]或$A_rs[0][\'NAME\']或$A_rs[0][\'name\']都可访问首条记录NAME字段
$I_start,$I_end是配合分页使用参数

function db_query($C_sql,$A_=\"\",$I_start=-1,$I_end=-1)
{
(!$C_sql){AlertExit(\"参数不全!\");}检查参数
连接检测
($this->I_linkID 0){AlertExit(\'数据库链接失败请和DBA联系!\');}


格式检测
$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);
(!$this -> I_stmtID){AlertExit(\' sql格式出错!请和员联系\');}
如果没指定绑定字段则从SQL语句中去取
($A_\"\")
{
$A_Cur = explode(\"select\",$C_sql);
$A_Cur = explode(\"from\",$A_Cur[1]);
$A_ = explode(\",\",$A_Cur[0]);
}
绑定数据库表字段
(gettype($A_) \".gif' />\") 查询列是
{
for($i=0;$i<count($A_);$i)
{
$A__up[$i] = trim(strtoupper($A_[$i])); 大写并去除空格
}
for($i=0;$i<count($A__up);$i)
{
OCIDefineByName($this -> I_stmtID,\"$A__up[$i]\",&$$A_[$i]); 绑定
}
}
(trim($A_) <> \"\") 查询列只有
{
$A__up = trim(strtoupper($A_));
OCIDefineByName($this -> I_stmtID,\"$A__up\",&$$A_);
}
执行绑定好SQL语句
(!OCIExecute($this -> I_stmtID))
{
echo \"<font color=red><b>执行出错:</b></font>SQL Error:<font color=red>$C_sql</font><br>\";
false;
}
$lower = 0; 返回 2维维下标控制变量
$cnt = 0; 开始取数标识
取记录
while (OCIFetchInto($this -> I_stmtID,&$cur,OCI_ASSOC))
{
取查询出来所有记录
($I_start -1)
{
(gettype($A_) \".gif' />\") 查询列是
{
for ($i=0;$i<count($A_);$i)
{
($cur[$A__up[$i]] <> $$A_[$i])
{
$$A_[$i] = $cur[$A__up[$i]];
}
$A_rs[$lower][$i] = $$A_[$i]; 用数字访问
$A_rs[$lower][$A_[$i]] = $$A_[$i]; 用小些访问
$A_rs[$lower][$A__up[$i]] = $$A_[$i]; 用大写访问
}
}
(trim($A_) <> \"\") 查询列只有
{
($cur[$A__up] <> $$A_)
{
$$A_ = $cur[$A__up];
}
$A_rs[$lower][0] = $$A_; 用数字访问
$A_rs[$lower][$A_] = $$A_; 用小写访问
$A_rs[$lower][$A__up] = $$A_; 用大些访问
}
$lower; 下标加
}
取出指定记录(配合分页使用)
($I_start <> -1)
{
($cnt >= $I_start)
{
$cnt;
($I_end - $I_start <> 0)
{
$I_end--;
(gettype($A_) \".gif' />\")
{
for($i=0;$i<count($A__up);$i)
{
($cur[$A__up[$i]] <> $$A_[$i])
{
$$A_[$i] = $cur[$A__up[$i]];
}
$A_rs[$lower][$i] = $$A_[$i]; 用数字访问
$A_rs[$lower][$A_[$i]] = $$A_[$i]; 用小些访问
$A_rs[$lower][$A__up[$i]] = $$A_[$i]; 用大写访问
}
}(trim($A_) <> \"\")
{
($cur[$A__up] <> $$A_)
{
$$A_ = $cur[$A__up];
}
$A_rs[$lower][0] = $$A_; 用数字访问
$A_rs[$lower][$A_] = $$A_; 用小些访问
$A_rs[$lower][$A__up] = $$A_; 用大写访问
}
$lower;
}
{
; 如果$I_end-$I_start=0 表示取完记录并跳出while循环
}
}
{
$cnt; 如果$cnt<$I_start,$cnt
}
}
} while结束
释放句柄并返回查询数据(个 2维)
OCIFreestatement($this -> I_stmtID);
$A_rs;
} function结束


名:db_change($C_sql,$A_bind)
作 用:db change
参 数:$C_sql sql语句
$A_bind 需绑定字段
返回值:布尔值
备 注:insert,delete,update通用

function db_change($C_sql,$A_bind=\"\")
{
(!$C_sql){AlertExit(\"参数不全!\");}检查参数
连接检测
($this -> I_linkID\"\"){ AlertExit(\"我们数据库正忙请稍后再连接!\");}
格式检测
$this -> I_stmtID = OCIParse($this -> I_linkID,$C_sql);
(!$this -> I_stmtID){AlertExit(\' sql格式出错!请和员联系\');}
绑定
(gettype($A_bind) \".gif' />\")
{
for($i=0;$i<count($A_bind);$i)
{
global $$A_bind[$i];
$$A_bind[$i] = StripSlashes($$A_bind[$i]); 去掉反斜线字元
$$A_bind[$i] = str_replace(\"<?\",\"< ?\",$$A_bind[$i]); 过滤掉PHP标示
}
for($i=0;$i<count($A_bind);$i){
OCIBindByName($this -> I_stmtID, \":$A_bind[$i]\", &$$A_bind[$i], -1); 绑定
}
}
(trim($A_bind) <> \"\") 不是
{
global $$A_bind;
$$A_bind = StripSlashes($$A_bind);
$$A_bind = str_replace(\"<?\",\"< ?\",$$A_bind); 过滤掉PHP标示
OCIBindByName($this -> I_stmtID, \":$arrBind\", &$$A_bind, -1);
}
执行并检测是否成功
(!OCIExecute($this -> I_stmtID,OCI_DEFAULT))
{
echo \"<font color=red><b>执行出错:</b></font>SQL Error:<font color=red>$C_sql</font><br>\";
false;
}
/*传回受影响行数
global $I_changenum;
$I_changenum = OCINumrows($this -> I_stmtID);*/
释放句柄传回值
OCIFreeStatement($this -> I_stmtID);
true;
}


名:db_delete($C_sql)
作 用:delete
参 数:C_sql sql语句


返回值:布尔值
备 注:该只是为了使用直观,本质db_change

function db_delete($C_sql)
{
$this -> db_change($C_sql);
}


名:db_insert($C_sql,A_bind)
作 用:insert
参 数:C_sql sql语句
A_bind 绑定
返回值:布尔值
备 注:该只是为了使用直观,本质db_change

function db_insert($C_sql,$A_bind=\"\")
{
$this -> db_change($C_sql,$A_bind);
}


名:db_update($C_sql,A_bind)
作 用:update
参 数:C_sql sql语句
A_bind 绑定
返回值:布尔值
备 注:该只是为了使用直观,本质db_change

function db_update($C_sql,$A_bind=\"\")
{
$this -> db_change($C_sql,$A_bind);
}

名:db_commit
作 用:事务递交
参 数:无
返回值:布尔值
备 注:无
function db_commit
{
(OCICommit($this->I_linkID));
}
名:db_rollback
作 用:事务回退
参 数:无
返回值:布尔值
备 注:无
function db_rollback
{
(OCIRollback($this->I_linkID));
}
名:db_logoff
作 用:断开数据库连接
参 数:无
返回值:布尔值
备 注:无
function db_logoff
{
(OCILogoff($this->I_linkID));
}


Tags: 

延伸阅读

最新评论

发表评论