结合功能的数据库,像 Oracle oci8。这个大大的减少了 SQL 编译的负荷。底下是 Oracle 范例: $conn->SelectLimit("SELECT * FROM TABLE WHERE COND=:val", 100,-1,array(''''val''''=> $val));
oci8po 驱动程序(oracle portable driver)使用更为标准的变量结合: $conn->SelectLimit("SELECT * FROM TABLE WHERE COND=?", 100,-1,array(''''val''''=> $val)); Ron Wilson 报告说 SelectLimit 在SQL指令有含 UNION 时会无效,并且建议了针对 mssql 的对策: > 事实上,我发现一个可以立即最佳化的建构 Select Union 方法。这适用于 MS-SQL,至于
其它数据库是否适合,就不确定了。当更新求助档时,你可以参考这个范例。注意,这个方
法不适用于 MySQL。
>
> 改变:
> Select column1 From table1
> Union
> Select column2 From table2
>
> 成为:
> Select * From (
> Select column1 From table1
> Union
> Select column2 From table2
> )
> As dummytable
>
> Ron CacheSelectLimit($secs2cache, $sql, $numrows=-1,$offset=-1,$inputarr=false) 类似于 SelectLimit,除了将数据集暂存在 $ADODB_CACHE_DIR 指定的目录里 $secs2cache 秒外。 自 1.80版起,$secs2cache成为了选择性参数: $conn->Connect(...);
$conn->cacheSecs = 3600*24; // 快取24小时
$rs = $conn->CacheSelectLimit(''''select * from table'''',10); CacheFlush($sql) 更新(删除)以 $sql 指令存放在 $ADODB_CACHE_DIR 指定目录内的全部快取数据集。如果你企图更新所有的快取数据集,请执行如下的PHP指令码(仅针对 Unix 有效):system("rm -f find ".ADODB_CACH_DIR." -name ADODB_*.cache") ;
ErrorMsg() 返回最后状态或是错误信息。即使没有错误发生,本函数也会返回一个字串。一般情况下,你不需要调用这个函数,除非ADODB函数因为错误状态返回了false值。 注意:如果 debug 旗标被启动了,SQL 错误信息将会在Execute函数被调用时发生错误后出现。 ErrorNo() 返回最后的错误号码。注意一点,旧版本的 PHP(4.0.6以前),不支持ODBC的错误编号。一般情况下,你不需要调用这个函数,除非ADODB函数因为错误状态返回了false值。 GenID($seqName = ''''ADOdbseq'''',$startID=1) 产生一个顺序号码(在mssql是一个整数值)。对 interbase,mysql,postgresql,oci8,oci8po,ODBC核心类驱动程序(如 access,vfp,db2等等) 都支持。使用 $seqName做为顺序名。如果数据库没有值,那么GenID()将会自动为你产生一个序号(产生使用者 id 时允许如此),换句话说,你必需自行建立序号。 如果你的数据库驱动程序要模拟序号,数据表的名称就是序号名(sequence name),而这个数据表必需有一个字段"id",而其数据类型为整数,或你需要更大些的 numeric(16)。 对于没有支持序号原生功能的ODBC及数据库(如 mssql,mysql),我们对每一个序号建立一个数据表。如果序号没有被预先定义,那启如的号码值就设定成 $startID。 注意,mssql驱动程序的 GenID()会产生一个16位元的GUID。自1.90版起,我们将返回整数。 UpdateBlob($table,$column,$val,$where) 允许你以 $where 条件保存一个BLOB(存在 $val里的)值到 $table 里的 $column 字段。 例: # for oracle
$conn->Execute(''''INSERT INTO blobtable (id, blobcol) VALUES (1, empty_blob())'''');
$conn->UpdateBlob(''''blobtable'''',''''blobcol'''',$blobvalue,''''id=1'''');
# non oracle databases
$conn->Execute(''''INSERT INTO blobtable (id, blobcol) VALUES (1, null)'''');
$conn->UpdateBlob(''''blobtable'''',''''blobcol'''',$blobvalue,''''id=1''''); 如果成功,会返回 true ,否则返回 false 值。目前有 MySQL, PostgreSQL, Oci8, Oci8po 及 Interbase 支持。其它驱动程序可能有效,仍在持续开发中。 要注意,在PHP 4.1.0 以前的版本,当 Interbase的 blob 值被 SELECT 取回值时,它仍需要被解码,请使用 $connection->DecodeBlob($blob); 以还原它的内容。 UpdateClob($table,$column,$val,$where) 允许你以 $where 条件保存一个BLOB(存在 $val里的)值到 $table 里的 $column 字段。类似于 UpdateBlog,但主要针对文字大型文件物件。 例: # for oracle
$conn->Execute(''''INSERT INTO clobtable (id, clobcol) VALUES (1, empty_clob())'''');
$conn->UpdateBlob(''''clobtable'''',''''clobcol'''',$clobvalue,''''id=1'''');
# non oracle databases
$conn->Execute(''''INSERT INTO clobtable (id, clobcol) VALUES (1, null)'''');
$conn->UpdateBlob(''''clobtable'''',''''clobcol'''',$clobvalue,''''id=1''''); UpdateBlobFile($table,$column,$path,$where,$blobtype=''''BLOB'''') 如同 UpdateBlob ,但我们将值改成一个文件路径,将整个文件存入。 成功返回 true 否则为 false。 GetUpdateSQL(&$rs, $arrFields, $forceUpdate=false,$magicq=false) 建立一个 SQL 以更新一个被给予的数据集 $rs ,被修改的字段存放在阵列 $arrFields中(这个阵列必需是具名阵列,字段名为索引,值为修正值),会与原来的数据集做一个比较,如果 $forceUpdate被设为 true,那么即使 $arrFields与 $rs->fields完全相同,也会产生出更新的SQL指令。数据集必需在连接状态。$magicq 被用于指出魔术引号功能是否被启动。 GetInsertSQL(&$rs, $arrFields,$magicq=false) 建立一个 SQL 以新增一笔记录到被给予的数据集 $rs。这个查询必需是在连接状态。$magicq 被用于指出魔术引号功能是否被启动。 PageExecute($sql, $nrows, $page, $inputarr=false) 使用数据集的页码功能,参数 $page 是以 1 为启使值,请参考范例 8. CachePageExecute($secs2cache, $sql, $nrows, $page, $inputarr=false) 使用数据集的页码功能,参数 $page 是以 1 为启使值,请参考范例 8.PageExecute 的快取版。 Close( ) 关闭数据库的连接。PHP4 以数据库连接结束时不需要特别去清除而享有盛名,因为其参考计数机制会自动帮我们清除掉。 BeginTrans( ) 启始一笔交易。会关闭自动结案功能。执行成功会返回 true 。如果不支持交易功能,部份数据库会一直传回 false 值。Interbase,Oracle 及 MSSQL 支持交易机制。请注意,因为 PHP 4.02 版的臭虫,交易支持在微软的 ADO 上是无效的。你必需使用你关连式数据库的原生交易支持功能。当连接结束时,任何开启的交易都会被还原。 CommitTrans( ) 成功的结束一次交易。如果成功,返回 true。如果数据库并不支持交易功能,那么就只会传回 true ,以表示数据总是交易成功的。 RollbackTrans( ) 结束一次交易,恢复所有改变。执行成功会返回 true 。如果数据库并不支持交易功能,那么就只会传回 false ,以表示数据总是不能恢复。 GetOne($sql) Executes the SQL and returns the first field of the first row as an array. The recordset and remaining rows are discarded for you automatically. If an error occur, false is returned. 执行SQL指令,并且以阵列的方式返回第一笔记录的第一个字段。数据集及其馀的记录将会被自动清除,如果发生错误,就返回 false 值。 译者注:这个功能在验证某笔记录在不在特别有用,可以减少系统内存及资源的用量。 GetRow($sql) 执行SQL指令,并且以阵列的方式返回第一笔记录。数据集及其馀的记录将会被自动清除,如果发生错误,就返回 false 值。 Prepare($sql ) 预先编译一个SQL查询,以便于重覆执行。如果有任何语法错误,Prepare()不会显示任合错误,但允许 Execute() 去取得及显示错误。内部实作支持 interbase ,oci8 及选择性的 ODBC-based 驱动程序。其馀的都是以模拟的方式支持。在模拟的情况下,使用 Prepare() 对效能的增进没有任何效果。 返回一个包含了原始描述为第一个阵列元素的阵列,其馀的元素内容则视驱动程序而定。如果有错误或是模拟方式的 Prepare(),会返回原来的 $sql 字串。那是因为所有的错误处理都被集中到 Execute() 里去了。 范例 : $stmt = $DB->Prepare(''''insert into table (col1,col2) values (?,?)'''');
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页 [MySql]PHP存取 Mysql 数据乱码终极解决方案 [Web开发]PHP提示Notice: Undefined variable的解决办法 [Web开发]PHP 大小写函数 [Web开发]PHP的sleep函数关闭窗口后是否继续运行? [Web开发]教你如何在PHP开启gzip页面压缩实例介绍 [Web开发]PHP过滤HTML字符串的常用函数使用方法介绍 [Web开发]PHP采集程序常用函数大全 [Web开发]用PHP实现Javascript的escape(),unescape()的方法 [Web开发]常见的PHP截取字符串函数整理 [系统软件]突破Windows 2003 PHP服务器的新思路
|