转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
PHP ADODB1.99版手册 (修正版)         ★★★★

PHP ADODB1.99版手册 (修正版)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:6201 更新时间:2009/4/23 10:41:03
for ($i=0; $i < $max; $i++) $DB->Execute($stmt,array((string) rand(), $i));

PrepareSP($sql)

在 mssql 驱动程序里,预编译预储程序必需要透过一个特别的函数来调用 mssql_init(),这个动作目前由本函数来处理了。PrepareSP() 可以在所有的驱动程序由被调用,而且以调用 Prepare() 的方式来模拟。使用范例请参考以下的 Parameter() 说明。

和上面的 Prepare() 返回一样的阵列或 $sql 字串。

Parameter($stmt, $var, $name, $isOutput=false, $maxLen = 4000, $type = false )

在运作中增加一个结合参数。目前相容于 Microsoft SQL 及 Oracle oci8。以下是参数说明:


$stmt  由 Prepare() 或 PrepareSP() 返回的指令。
$var 要结合的 PHP 变量。
$name 要结合的预储程序的变量名。
[$isOutput] 设定参数传导的方向,0/false = IN 1=OUT 2= IN/OUT 。 在 oci8 中这个参数会被忽略,因为驱动程序会自动侦测。 
[$maxLen] 参数变量的最大长度。
[$type] 参考 mssql_bind 及 ocibindbyname 在 PHP.NET 的文件说明以取得更多正确值的信息。

在 mssql,$opt 可以被下列的元素所影响:mssql_bind and ocibindbyname 。 例如 ;

# @RETVAL = SP_RUNSOMETHING @myid,@group
$stmt = $db->PrepareSP(''''SP_RUNSOMETHING''''); 
# note that the parameter name does not have @ in front!
$db->Parameter($stmt,$id,''''myid''''); 
$db->Parameter($stmt,$group,''''group'''',false,64);
# return value in mssql - RETVAL is hard-coded name 
$db->Parameter($stmt,$ret,''''RETVAL'''',true); 
$db->Execute($stmt); 

一个 oci8 的例子:

# 对于 oracle, Prepare 及 PrepareSP 是相同的
$stmt = $db->PrepareSP(
        "declare ret integer;
     begin 
                :RETVAL := SP_RUNSOMETHING(:myid,:group);
     end;");
$db->Parameter($stmt,$id,''''myid'''');
$db->Parameter($stmt,$group,''''group'''',false,64);
$db->Parameter($stmt,$ret,''''RETVAL'''',true);
$db->Execute($stmt);

请注意,在 oci8 及 mssql 间只有语法上的不同,那是各数据库实作 SQL 语法问题,ADODB 对于这一部份无能为力。

如果 $type 参数被设定成 false 。在 mssql ,$type 将会动态的由 PHP 变量传来的类型决定(string => SQLCHAR, boolean =>SQLINT1, integer =>SQLINT4 或  float/double=>SQLFLT8),在 oci8,$type 可以被设成 OCI_B_FILE (Binary-File), OCI_B_CFILE (Character-File), OCI_B_CLOB (Character-LOB), OCI_B_BLOB (Binary-LOB) 及 OCI_B_ROWID (ROWID)。如果要传入空值,使用  $db->Parameter($stmt, $null=null, ''''param'''')。

最后,在 oci8,结合参数可以重覆被使用,而无需再一次调用 PrepareSP() 或 Parameters。但这对 mssql 是不行的。一个 oci8 的范例如下:

$id = 0; $i = 0;
$stmt = $db->PrepareSP( "update table set val=:i where id=:id");
$db->Parameter($stmt,$id,''''id'''');
$db->Parameter($stmt,$i, ''''i'''');
for ($cnt=0; $cnt < 1000; $cnt++) {
        $id = $cnt;
        $i = $cnt * $cnt; # oci8 下可以运作
        $db->Execute($stmt);
}

Bind($stmt, $var, $size=4001, $type=false, $name=false)

这是一个低阶函数,只有 oci8 驱动程序支持。只有你确定系统仅支持 Oracle 否则请避免使用它。Parameter() 函数是使用结合变量的另一个建议方式。

Bind() 允许你使用结合变量在你的 sql 叙述中。这里结合一个PHP变量给一个在之前被 Prepare() 预先编译的 Oracle sql 叙述里定义的名称。Oracle 以一个冒号为开头来命名一个变量,而且 ADODB 需要一个被命名的变量去对应 :0,:1,:2,:3,等等。第一次被 Bind() 取得的将会代入 :0,而第二次将会代入 :1,依此类推。对 insert , select 及 update 指令,结合可以提供 100% 的效能提升。

在其馀的参数里,$size 设定数据保存的暂存区大小,$type 是 OCI_B_FILE (Binary-File), OCI_B_CFILE (Character-File), OCI_B_CLOB (Character-LOB), OCI_B_BLOB (Binary-LOB) 及 OCI_B_ROWID (ROWID) 的类别选项。最后,代替使用预设的 :0,:1 等等名称,你可以使用 $name 来定义你自己的连接名称。

接下来的例子展示3个连接变量,使用 p1,p2及p3来结合。这些变量将会配到 :0 , :1 及 :2 。

$stmt = $DB->Prepare("insert into table (col0, col1, col2) values (:0, :1, :2)");
$DB->Bind($stmt, $p1);
$DB->Bind($stmt, $p2);
$DB->Bind($stmt, $p3);
for ($i = 0; $i < $max; $i++) { 
   $p1 = ?; $p2 = ?; $p3 = ?;
   $DB->Execute($stmt);
}

你也可以使用名称变量:

$stmt = $DB->Prepare("insert into table (col0, col1, col2) values (:name0, :name1, :name2)");
$DB->Bind($stmt, $p1, "name0");
$DB->Bind($stmt, $p2, "name1");
$DB->Bind($stmt, $p3, "name2");
for ($i = 0; $i < $max; $i++) { 
   $p1 = ?; $p2 = ?; $p3 = ?;
   $DB->Execute($stmt);
}

ADOConnection 公用函数

BlankRecordSet([$queryid])

不再使用,本版已移除。

Concat($s1,$s2,....)

产生一个结合 $s1,$s2,..等 sql 字串的字串,使用了在 concat_operator 字段定义的结合运算符号。如果结合运算符号不被使用,那这个函数将无效,例如 MySQL 。

本函数返回含结合符号的字串。

DBDate($date)

格式化 $date 成数据库可以接收的格式,这可以是一个 Unix 整数时间记录格式或是一个 ISO 格式的 Y-m-d。使用 fmtDate 字段所定义的格式。如果传入的是 null 或是 false 或是 '''''''' ,那将会转成一个 SQL 的 null。

返回一个日期字串。

DBTimeStamp($ts)

格式化时间记录格式的 $ts 成数据库可接受的格式。这可以是一个 Unix 整数时间记录格式或是一个 ISO 格式的 Y-m-d。使用 fmtDate 字段所定义的格式。如果传入的是 null 或是 false 或是 '''''''' ,那将会转成一个 SQL 的 null。

返回一个时间字串。

qstr($s,[$magic_quotes_enabled=false])

将一个字串放在引号内,以送到数据库中。$magic_quotes_enabled 参数可能看起来很有趣,但这个想法是假设你已经用一个引号来处理了从 POST/GET 变量取来的字串后,然后以 get_magic_quotes_gpc() 做为第二个参数。这会确定这个变量不会被引号处理二次,一次被 qstr 处理,一次被 magic_quotes_gqc

例如:  $s = $db->qstr(HTTP_GET_VARS[''''name''''],get_magic_quotes_gpc());

返回值是一个被引号处理过的字串。

Affected_Rows( )

返回被SQL指令更新或被删除掉的数据笔数。如果数据库不支持,返回一个 false 值。

目前 interbase/firebird 不支持本函数。

Insert_ID( )

返回最后插入时的自动增进值 ID。如果系统不支持,返回 false。

只支持有提供自动增进或物件 ID 的数据库,目前像是 PostgreSQL, MySQL 以及 MSSQL 都有。PostgreSQL 返回一个 OID,可以在数据库重载入时改变。只有使用持续连接方式,当你完成一笔交易时,这个函数才会有精确的结果。这是因为被 Execute() 宣告的连接可能和下一个 Execute() 时用的连接不同。

MetaDatabases()

返回一个在服务器中的数据库清单于阵列里。首先你必需连接到服务器。目前只支持 ODBC, MySQL 及 ADO。

MetaTables()

返回目前数据库中全部数据表名称于一个阵列中。如果可能,这个阵列将会排除系统目录数据表。

MetaColumns($table)

返回一个 ADOFieldObject 的阵列,一个字段物件对应到一个 $table 的所有行。目前 Sybase 不能辨别数据类型,ADO 不能辨识正确的数据类型(所以我们预设为 varchar)..

MetaColumnNames($table)

返回 $table 的行名于一个阵列中。


ADORecordSet(数据集)

上一页  [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服务器的新思路
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台