DM PHP 编程指南

6.1 DM PHP介绍

本章主要介绍DM PHP扩展的基本概念以及使用方法,以便于用户更好地使用DM PHP扩展库编写PHP应用程序。

在使用PHP语言的Web应用中,为了可以和DM数据库的服务器端进行通信,并且获得更快的速度以及对系统更强的控制,我们可以通过一个用C语言函数实现的瘦中间层来实现这个目标。该瘦中间层就是PHP扩展,它实现了一组C语言API,成为PHP语言级别的函数调用。

DM PHP是在PHP开放源码的基础上开发的一个动态扩展库,命名统一采用dm开头的小写英文字母方式,各个单词之间以下划线分割。PHP应用程序可通过DM PHP扩展接口库访问DM数据库服务器。

下面列出DM提供的PHP 5.x扩展函数,并简要说明每个函数的功能。

序号 函数类型 扩展库接口函数 作用描述 PHP 7.x
1 连接相关 dm_connect 打开一个到DM服务器的连接 支持,但参数略有不同
2 dm_pconnect 打开一个到DM服务器的持久连接 支持,但参数略有不同
3 dm_close 关闭DM连接 支持(PHP 5.x返回dmbool,PHP 7.x返回void)
4 dm_set_connect 设置连接 PHP 7.x用 dm_setoption代替
5 dm_get_server_info 取得DM服务器信息 支持
6 绑定参数 dm_prepare 准备一条语句 支持,但参数略有不同
7 执行 dm_execute 执行一条语句 支持,但功能和参数略有不同
8 查询 dm_query 发送一条DM查询,并可执行 PHP 7.x用dm_exec代替(本扩展函数自PHP 5.5.0起已废弃)
9 dm_unbuffered_query 向DM发送一条SQL查询,并不获取和缓存结果的行 PHP 7.x用dm_exec代替
10 dm_more_query_no_result 执行一条无结果集的语句 PHP 7.x用dm_exec代替
11 dm_db_query 发送一条库的DM查询,并可执行,但库参数不起作用 PHP 7.x用dm_exec代替
12 查询 dm_result 取得一行结果数据 支持,但功能和参数略有不同
13 dm_more_result 确定句柄上是否包含有多个结果集。如果有,则处理这些结果集 PHP 7.x用dm_next_result代替
14 dm_free_result 释放结果内存 支持
15 dm_num_rows 取得结果集中行的数目 支持
16 dm_num_fields 取得结果集中字段的数目 支持
17 dm_affected_rows 取得前一次DM操作所影响的记录行数 支持
18 dm_data_seek 移动内部结果的游标 PHP 7.x用 dm_fetch_row代替
19 Fetch结果集 dm_fetch_array 从结果集中取得一行作为关联数组,或数字数组,或二者兼有 支持,但功能和参数略有不同
20 dm_fetch_object 从结果集中取得一行作为对象 支持,但参数略有不同
21 dm_fetch_row 从结果集中取得一行作为枚举数组 支持,但功能和参数略有不同
22 dm_fetch_assoc 从结果集中取得一行作为关联数组 PHP 7.x用 dm_fetch_row代替
23 dm_fetch_field 从结果集中取得列信息并作为对象返回 支持
24 dm_fetch_length 取得结果集中每个输出的长度 PHP 7.x用dm_fetch_array代替
25 表元数据 dm_list_fields 列出DM结果中的字段 支持
26 dm_list_tables 列出DM数据库中的表 PHP 7.x用dm_tables代替
27 dm_tablename 取得表名 支持
28 列元数据 dm_field_flags 从结果中取得和指定字段关联的标志 支持
29 dm_field_len 返回指定字段的长度 支持
30 dm_field_name 取得结果中指定字段的字段名 支持
31 dm_field_seek 将结果集中的指针设定为制定的字段偏移量 PHP 7.x用 dm_fetch_field代替
32 dm_field_table 取得指定字段所在的表名 支持
33 dm_field_type 取得结果集中指定字段的类型 支持
34 dm_insert_id 取得上一步INSERT操作产生的ID 支持
35 dm_error 返回上一个DM操作产生的文本错误信息 PHP 7.x用dm_errormsg代替
36 dm_errno 返回上一个DM操作中的错误信息的数字编码 PHP 7.x用dm_error代替
37 事务 dm_abort 回滚一个事务 PHP 7.x用dm_rollback代替
38 dm_commit 提交一个事务 支持
39 dm_autocommit 设置自动提交功能 支持
40 dm_begin_trans 开始一个事务 PHP 7.x用dm_autocommit代替
41 其他 dm_set_object_name_case 设置比较时的大小写方式 支持
42 dm_escape_string 转义一个字符串用于dm_query 支持
43 dm_ping Ping一个服务器连接,如果没有连接则重新连接 支持

下面列出DM提供的PHP 7.x扩展函数,并简要说明每个函数的功能。

序号 函数类型 扩展库接口函数 作用描述 PHP 5.x
1 兼容PHP 5.x的函数 dm_close 关闭DM连接 支持
2 dm_num_fields 取得结果集中字段的数目 支持
3 dm_field_len/别名dm_field_precision 返回指定字段的长度 支持
4 dm_field_name 取得结果中指定字段的字段名 支持
5 dm_field_type 取得结果集中指定字段的类型 支持
6 dm_free_result 释放结果内存 支持
7 dm_num_rows 取得结果集中行的数目 支持
8 dm_commit 提交一个事务 支持
9 dm_fetch_field 从结果集中取得列信息并作为对象返回 支持
10 dm_affected_rows 取得前一次DM操作所影响的记录行数 支持
11 dm_insert_id 取得上一步INSERT操作产生的ID 支持
12 dm_list_fields 列出DM结果中的字段 支持
13 dm_tablename 取得表名 支持
14 dm_field_table 取得指定字段所在的表名 支持
15 dm_field_flags 从结果中取得和指定字段关联的标志 支持
16 dm_get_server_info 取得DM服务器信息 支持
17 dm_escape_string 转义一个字符串用于dm_query 支持
18 dm_ping Ping一个服务器连接,如果没有连接则重新连接 支持
19 dm_set_object_name_case 设置比较时的大小写方式 支持
20 与PHP 5.x同名,但功能或参数略有不同 dm_prepare 准备一条语句 参数略有不同
21 dm_execute 执行一条准备过的语句 功能和参数略有不同
22 dm_fetch_array 指定行号从结果集中取得一行作为关联数组 功能和参数略有不同
23 dm_fetch_row 从结果集中取得一行数据 功能和参数略有不同
24 dm_fetch_object 从结果集中取得一行作为对象 参数略有不同
25 dm_result 取得结果数据 功能和参数略有不同
26 dm_connect 打开一个到DM服务器的连接 参数略有不同
27 dm_pconnect 打开一个到DM服务器的持久连接 参数略有不同
28 dm_error 返回上一个DM操作中的错误信息的数字编码 功能等价于dm_errno(PHP 5.x)
29 新增函数 dm_binmode 是否读取二进制类型
30 dm_close_all 关闭所有DM连接
31 dm_columns 获取指定表的所有列信息
32 dm_autocommit 设置自动提交功能
33 dm_cursor 获取游标信息
34 dm_errormsg 返回上一个DM操作产生的文本错误信息 功能等价于dm_error(PHP 5.x)
35 dm_exec/别名dm_do 准备并执行sql语句 功能等价于dm_execute(PHP 5.x)
36 dm_fetch_into 从结果集中取得一行作为一个数组
37 dm_field_scale 取得结果中指定字段的标度
38 dm_field_num 取得结果中字段的编号
39 dm_longreadlen 设置变长类型,读取的最大长度
40 dm_next_result 确定句柄上是否包含有多个结果集。如果有,则处理这些结果集
41 dm_result_all 获取全部结果集,并打印成html格式
42 dm_rollback 回滚 功能等价于dm_abort (PHP 5.x)
43 dm_setoption 调整语句和连接的属性配置 功能等价于dm_set_connect(PHP 5.x)
44 dm_specialcolumns 获取特殊列
45 dm_statistics 获取表的统计信息
46 dm_tables 获取指定模式所有表信息 功能等价于dm_list_tables(PHP 5.x)
47 dm_primarykeys 获取表的主键
48 dm_columnprivileges 列的权限
49 dm_tableprivileges 表的权限
50 dm_foreignkeys 获取表的外键
51 dm_procedures 获取所有过程名
52 dm_procedurecolumns 获取所有过程的参数名

6.2 基本示例

利用DM PHP驱动程序进行编程的一般步骤为:

  1. 利用dm_connect()建立同数据库的连接。
  2. DM PHP数据操作。数据操作主要分为两个方面,一个是更新操作,例如更新数据库、删除一行、创建一个新表等;另一个就是查询操作。dm_query()执行完查询之后,会得到一个记录集。可以操作该对象来获得指定列的信息、读取指定行的某一列的值。
  3. 释放资源。在操作完成之后,用户需要释放系统资源,主要是关闭结果集、关闭语句对象,释放连接。

下面用具体的编程实例来展示利用DM PHP对示例数据库BOOKSHOP,以产品信息表product的增加、删除、修改、查询为例子进行数据库操作的基本步骤。

  1. 增加记录
<?php
    /* 连接选择数据库 */
    $link = dm_connect("localhost", "SYSDBA", "SYSDBA")
        or die("Could not connect : " . dm_error()); 
    print "Connected successfully";
    /* 执行 SQL 查询 */
    $query = " INSERT INTO production.product(name,author,publisher,publishtime,
product_subcategoryid,productno,satetystocklevel,originalprice,nowprice,
discount,description,photo,sellstarttime) 
VALUES('三国演义','罗贯中','中华书局','2005-04-01','4','9787101046121','10',
'19.0000','15.2000','8.0','《三国演义》是中国第一部长篇章回体小说!',null,'2006-03-20')";
    $result = dm_query($query) or die("Query failed : " . dm_error()); 
    /* 释放资源 */
    dm_free_result($result);
    /* 断开连接 */
    dm_close($link);
?>
  1. 修改数据
<?php
    /* 连接选择数据库 */
    $link = dm_connect("localhost", "SYSDBA", "SYSDBA")
        or die("Could not connect : " . dm_error()); 
    print "Connected successfully";
    /* 执行 SQL 查询 */
    $query = " UPDATE production.product SET TYPE =1000 WHERE productid = 10";
    $result = dm_query($query) or die("Query failed : " . dm_error()); 
    /* 释放资源 */
    dm_free_result($result);
    /* 断开连接 */
    dm_close($link);
?>
  1. 删除记录
<?php
    /* 连接选择数据库 */
    $link = dm_connect("localhost", "SYSDBA", "SYSDBA")
        or die("Could not connect : " . dm_error()); 
    print "Connected successfully";
    /* 执行 SQL 查询 */
    $query = " DELETE FROM production.product WHERE productid = 10";
    $result = dm_query($query) or die("Query failed : " . dm_error()); 
    /* 释放资源 */
    dm_free_result($result);
    /* 断开连接 */
    dm_close($link);
?>
  1. 查询记录
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 <style type="text/css">
<!--
body,td,th {
	font-size: 12px;
}
-->
</style></head>
<body><?php
    /* 连接选择数据库 */
    $link = dm_connect("localhost", "SYSDBA", "SYSDBA")
        or die("Could not connect : " . dm_error()); 
    print "Connected successfully";
    /* 执行 SQL 查询 */
    $query = " select * from production.product";
    $result = dm_query($query) or die("Query failed : " . dm_error()); 
    /* 在 HTML 中打印结果 */
    print "<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\">\n";
    while ($line = dm_fetch_array($result, DM_ASSOC)) {
        print "\t<tr>\n";
        foreach ($line as $col_value) {
            print "\t\t<td>$col_value</td>\n";
        }
        print "\t</tr>\n";
    }
    print "</table>\n";
    /* 释放资源 */
    dm_free_result($result);
    /* 断开连接 */
    dm_close($link);
?>
 </body>
</html>
  1. 存储过程

运行程序,启动达梦数据库服务器并创建用于修改产品信息的存储过程。存储过程代码如下:

create or replace procedure "PRODUCTION"."updateProduct"
(
  v_id int,
  v_name varchar(50)
)
as
begin
  UPDATE production.product SET name = v_name WHERE productid = v_id;
end;

在PHP里得到返回的结果集。

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 <style type="text/css">
<!--
body,td,th {
	font-size: 12px;
}
-->
</style></head>
<body><?php
    /* 连接选择数据库 */
    $link = dm_connect("localhost", "SYSDBA", "SYSDBA")
        or die("Could not connect : " . dm_error()); 
    print "Connected successfully";
    dm_select_db("system") or die("Could not select database");
    /* 执行 SQL 查询 */
    $query = " CALL production.updateProduct(1,'红楼梦')";
    $result = dm_query($query) or die("Query failed : " . dm_error()); 
     /* 释放资源 */
    dm_free_result($result);
    /* 断开连接 */
    dm_close($link);
?>
</body>
</html>

6.3 DM PHP模块加载

目前DM支持的PHP版本为PHP 5.2、5.3 、5.4 、5.5 、5.6和 PHP 7.0、7.1、7.2、7.3、7.4,凝思操作系统只支持到PHP7.2,用户可根据自己安装的PHP版本选择对应的接口库。

下面的示例均以PHP5.3版本为例,如果版本不同,将53改为对应值即可。

6.3.1 linux系统下PHP加载

linux系统下的PHP加载分为两种方式:普通源码安装方式和yum安装方式。

普通源码安装下载的是源码包,编译安装过程可以设定参数,按照需求进行安装,并且安装的版本可以选择,灵活性比较大。

yum安装下载的是rpm软件包,安装rpm包。这个rpm包是别人编译安装好的二进制包,安装方便快捷,但是安装过程无法干预,不能按需安装。因此,安装之后,要根据实际情况再进行局部功能调整。

linux系统下PDO接口依赖的动态链接库如下:libcrypto.so、libdmdpi.so、libdmmem.so、libdmutl.so、libssl.so、libdmclientlex.so、libdmelog.so、libdmos.so。上述动态链接库在DM安装目录的/bin目录下。

6.3.1.1 普通源码安装

步骤:

  1. 下载并安装apache

从网络中下载apache-2.0.48.tar.gz。存至/home/tmp。

cd /home/tmp
tar -xvzf apache-2.0.48.tar.gz  /usr/local
cd /usr/local/apache-2.0.48
./configure --prefix=/usr/local/apache  --enable-module=so
make
make install
cd /usr/local/apache/conf
vi httpd.conf
ServerName localhost
port 80
DirectoryIndex default.php default.phtml default.php3 default.html default.htm 
AddType application/x-httpd-php .php .phtml .php3 .inc 
AddType application/x-httpd-php-source .phps 
  1. 下载并安装PHP

从网络中下载最新php-5.3.tar.gz 。存至/home/tmp。

cd /home/tmp
tar -xvzf php-x.x.x.tar.gz  /usr/local
cd /usr/local/php-x.x.x
./buildconf --force
./configure --with-apache2=/usr/local/apache/bin/apxs
make 
make install
cp php.ini-dist /usr/local/lib/php.ini
  1. 安装DM DBMS

假定安装到/usr/local/DMDBMS目录。

  1. 配置DM PHP

修改php.ini,添加extension_dir=drivers/php_pdo,extension=libphp53_dm.so,添加php.ini中有关连接的配置。设置环境变量export
LD_LIBRARY_PATH=/usr/local/DMDBMS/bin,或者设置为依赖文件libdmdpi.so存放的路径。

6.3.1.2 yum方式安装

步骤:

  1. 安装epel
yum install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
  1. 安装PHP
yum install php72w
  1. 安装必需扩展和pdo扩展
yum install php72w-cli
yum install php72w-pdo
  1. 查看版本
php -v

PHP 7.2.27 (cli) (built: Jan 26 2020 15:49:49) ( NTS )

Copyright (c) 1997-2018 The PHP Group

Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
  1. 修改配置文件/etc/php.ini

配置PDO的数据库扩展,需要PDO的支持。

因为 PDO必须在具体的数据库扩展被载入前初始化,而congifuge/make&makestall配置编译安装会默认启用自带的PDO模块,yum共享模块安装不会启用,所以要在配置具体的dm数据库pdo扩展前配置pdo.so。

extension=pdo.so
extension=php72_pdo_dm.so
extension=libphp53_dm.so
  1. 拷贝驱动至目录 /usr/lib64/php/modules
  2. 设置LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/home/ATS/smoke_47570/dm7dev2/build/linux/linux_build/debug
  1. 再次查看版本
[root@192 linux_build]## php –v
PHP 7.2.27 (cli) (built: Jan 26 2020 15:49:49) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

6.3.2 Windows系统下加载PHP模块

步骤:

  1. 下载apache的windows版本并安装,同时修改httpd.conf。
  2. 下载PHP并安装。
  3. 安装DM DBMS。
  4. 配DM PHP。拷贝drivers\php_pdo目录下php53_dm.dll到php目录下的ext目录中,修改php.ini,添加extension=php53_dm.dll,添加php.ini中有关连接的配置;拷贝bin目录下依赖的库文件dmdpi.dll到php目录下的ext目录中。php53_dm.dll中PDO类和PDOStatement类支持的接口和libphp53_dm.so一样。
  5. 重启apache服务器,在浏览器中输入http:\\localhost\php_info.php查看是否有dm模块项,如有说明加载DM PHP成功。

Windows系统下PDO接口依赖的动态链接库如下:dmdpi.dll、dmclientlex.dll、dmutl.dll、dmstrt.dll、dmshm.dll、dmos.dll、dmmsg.dll、dmmout.dll、dmmem.dll、dmelog.dll、dmdta.dll、dmdcr.dll、dmcyt.dll、dmcvt.dll、dmcpr.dll、dmcomm.dll、dmcfg.dll、dmcalc.dll。上述动态链接库在DM安装目录的\bin目录下。

6.3.3 PHP INI文件和libphp53_dm.so类介绍

php.ini中可以配置的参数如下表所示:

参数 说明 配置示例
dm.default_host DM连接默认ip和port dm.default_host =192.168.0.25:6237
dm.default_user DM连接默认用户名 dm.default_user =SYSDBA
dm.default_pw DM连接默认密码 dm.default_pw =SYSDBA
extension_dir DM依赖库路径 extension_dir=D:\php-7.1.32-nts-Win32-VC14-x64\ext
extension DM依赖库名称 extension=php71nts_dm.dll
dm.defaultlrl Clob类型读取的默认长度,单位为BYTE,范围(1~2147483648),即(1~2G), 默认4096 dm.defaultlrl = 32767

libphp53_dm.so中PDO类和PDOStatement 类共支持34 个接口:

类名 序号 接口名 释义
PDO 1 PDO::beginTransaction  启动一个事务
2 PDO::commit  提交一个事务
3 PDO::__construct  创建一个表示数据库连接的 PDO 实例
4 PDO::errorCode  获取跟数据库句柄上一次操作相关的 SQLSTATE
5 PDO::errorInfo  获取最后一次操作数据库句柄的扩展错误信息
6 PDO::exec  执行一条 SQL 语句,并返回受影响的行数
7 PDO::getAttribute  取回一个数据库连接的属性
8 PDO::getAvailableDrivers  返回一个可用驱动的数组
9 PDO::inTransaction  检查是否在一个事务内
10 PDO::lastInsertId  返回最后插入行的ID 
11 PDO::prepare  准备要执行的语句,并返回语句对象
12 PDO::query  执行 SQL 语句,以 PDOStatement 对象形式返回结果集
13 PDO::quote  SQL 查询里的字符串添加引号(不支持)
14 PDO::rollBack  回滚一个事务
15 PDO::setAttribute  设置属性
PDOStatement 16 PDOStatement::bindColumn  绑定一列到一个 PHP 变量
17 PDOStatement::bindParam  绑定一个参数到指定的变量名
18 PDOStatement::bindValue  把一个值绑定到一个参数
19 PDOStatement::closeCursor  关闭游标,使语句能再次被执行。
20 PDOStatement::columnCount  返回结果集中的列数
21 PDOStatement::debugDumpParams  打印一条 SQL 预处理命令
22 PDOStatement::errorCode  获取跟上一次语句句柄操作相关的 SQLSTATE
23 PDOStatement::errorInfo  获取跟上一次语句句柄操作相关的扩展错误信息
24 PDOStatement::execute  执行一条预处理语句
25 PDOStatement::fetch  从结果集中获取下一行
26 PDOStatement::fetchAll  返回一个包含结果集中所有行的数组
27 PDOStatement::fetchColumn  从结果集中的下一行返回单独的一列。
28 PDOStatement::fetchObject  获取下一行并作为一个对象返回。
29 PDOStatement::getAttribute  检索一个语句属性
30 PDOStatement::getColumnMeta  返回结果集中一列的元数据
31 PDOStatement::nextRowset  在一个多行集语句句柄中推进到下一个行集
32 PDOStatement::rowCount  返回受上一个 SQL 语句影响的行数
33 PDOStatement::setAttribute  设置一个语句属性
34 PDOStatement::setFetchMode  为语句设置默认的获取模式

6.4 编程接口

6.4.1 PHP 5.X接口

  1. dm_connect

描述

建立一个到DM服务器的连接。

格式

resource dm_connect ( [string server [, string username [, string password [, bool $new_link][, bool $client_flags]]]]])

参数

参数 描述
server [IN]服务器名称,缺省使用php.ini中的配置
username [IN]用户名称,缺省使用php.ini中的配置
password [IN]用户密码,缺省使用php.ini中的配置
$new_link [IN]设为0或不设时,用同样的参数第二次调用dm_connect将不会建立新连接,而将返回已经打开的连接标识;设为1时总是返回新的连接标识
client_flags 保留参数,不起作用

返回值

如果成功则返回一个连接标识,失败则返回 FALSE。

例如:

dm_connect("192.168.0.25", "SYSDBA", "SYSDBA", 1);
  1. dm_pconnect

描述

打开一个到DM服务器的持久连接。

格式

resource dm_pconnect ( [string server [, string username [, string password[, bool $client_flag1[, bool $client_flag2]]]]]);

参数

参数 描述
server [IN]服务器名称,缺省使用php.ini中的配置
username [IN]用户名称,缺省使用php.ini中的配置
password [IN]用户密码,缺省使用php.ini中的配置
client_flag1 保留参数,不起作用
client_flag2 保留参数,不起作用

返回值

如果成功则返回一个正的持久连接标识符,出错则返回FALSE。

例如:

dm_pconnect("192.168.0.25", "SYSDBA", "SYSDBA");
  1. dm_close

描述

关闭指定的连接标识所关联的DM服务器的连接。如果没有指定link_identifier,则关闭上一个打开的连接

格式

bool dm_close ( [resource link_identifier])

参数

参数 描述
link_identifier [IN]连接标识符

返回值

如果成功则返回TRUE,失败则返回FALSE。

  1. dm_set_connect

描述

设置连接。

格式

int dm_set_connect (int attr,int value,resource link_identifier)

参数

参数 描述 属性值
attr 设置的属性,同dpi DSQL_ATTR_ACCESS_MODE 101 DSQL_ATTR_AUTOCOMMIT 102 DSQL_ATTR_CONNECTION_TIMEOUT 113 DSQL_ATTR_LOGIN_TIMEOUT 103 DSQL_ATTR_TRACE 104 DSQL_ATTR_TRACEFILE 105 DSQL_ATTR_TXN_ISOLATION 108 DSQL_ATTR_CURRENT_CATALOG 109 DSQL_ATTR_PACKET_SIZE 112 DSQL_ATTR_CONNECTION_DEAD 1209 DSQL_ATTR_LOGIN_PORT 12350 DSQL_ATTR_STR_CASE_SENSITIVE 12351 DSQL_ATTR_LOGIN_USER 12352 DSQL_ATTR_MAX_ROW_SIZE 12353 DSQL_ATTR_CURRENT_SCHEMA 12354 DSQL_ATTR_INSTANCE_NAME 12355 DSQL_ATTR_LOGIN_SERVER 12356 DSQL_ATTR_SERVER_CODE 12349 DSQL_ATTR_APP_NAME 12357 DSQL_ATTR_COMPRESS_MSG 12358 DSQL_ATTR_USE_STMT_POOL 12359 DSQL_ATTR_SERVER_MODE 12360 DSQL_ATTR_SERVER_VERSION 12400 DSQL_ATTR_SSL_PATH 12401 DSQL_ATTR_SSL_PWD 12402 DSQL_ATTR_MPP_LOGIN 12403 DSQL_ATTR_TRX_STATE 12404 DSQL_ATTR_UKEY_NAME 12405 DSQL_ATTR_UKEY_PIN 12406 DSQL_ATTR_CLIENT_VERSION 12407 DSQL_ATTR_RWSEPARATE 12408 DSQL_ATTR_RWSEPARATE_PERCENT 12409 DSQL_ATTR_CURSOR_ROLLBACK_BEHAVIOR 12410 DSQL_ATTR_UDP_FLAG 12411 DSQL_ATTR_OSAUTH_TYPE 12412 DSQL_ATTR_INET_TYPE 12413 DSQL_ATTR_DDL_AUTOCOMMIT 12414 DSQL_ATTR_LOGIN_CERTIFICATE 12415 DSQL_ATTR_LOCAL_CODE 12345 DSQL_ATTR_LANG_ID 12346 DSQL_ATTR_CONNECTION_POOLING 12347 DSQL_ATTR_TIME_ZONE 12348 DSQL_ATTR_CON_CACHE_SZ 12349 DSQL_ATTR_DEC2DOUB_CNVT 12350 DSQL_ATTR_LOCAL_CODE 12345 DSQL_ATTR_LANG_ID 12346 DSQL_ATTR_TIME_ZONE 12348
value 设置的值 PG_UTF8 1 PG_GBK 2 PG_BIG5 3 PG_ISO_8859_9 4 PG_EUC_JP 5 PG_EUC_KR 6 PG_KOI8R 7 PG_ISO_8859_1 8 PG_SQL_ASCII 9 PG_GB18030 10 PG_ISO_8859_11 11
link_identifier [IN]连接标识符

返回值

如果成功则返回TRUE,失败则返回FALSE。

  1. dm_error

描述

返回上一个DM 操作产生的文本错误信息。

格式

string dm_error ( [resource link_identifier])

参数

参数 描述
link_identifier [IN]连接标识符

返回值

返回上一个DM函数的错误文本,如果没有出错则返回''(空字符串)。如果没有指定连接资源号,则使用上一个成功打开的连接从DM服务器提取错误信息。

  1. dm_errno

描述

返回上一个 DM 操作中的错误信息的数字编码。

格式

int dm_errno ( [resource link_identifier])

参数

参数 描述
link_identifier [IN]连接标识符

返回值

返回上一个 DM 函数的错误号码,如果没有出错则返回0(零)。

  1. dm_query

描述

发送一条 DM 查询。

格式

resource dm_query ( string query [, resource link_identifier])

参数

参数 描述
query [IN]查询字符串
link_identifier [IN]连接标识符

返回值

仅对SELECT、EXPLAIN语句返回一个资源标识符,如果查询执行不正确则返回FALSE。对于其它类型的 SQL 语句,dm_query()在执行成功时返回TRUE,出错时返回FALSE。非FALSE的返回值意味着查询是合法的并能够被服务器执行。这并不说明任何有关影响到的或返回的行数。

  1. dm_unbuffered_query

描述

向DM发送一条SQL查询,并不获取和缓存结果的行。

格式

resource dm_unbuffered_query ( string query [, resource link_identifier])

参数

参数 描述
query [IN]查询字符串
link_identifier [IN]连接标识符

返回值

向DM发送一条SQL查询query,但不像dm_query()那样自动获取并缓存结果集。一方面,这在处理很大的结果集时会节省可观的内存;另一方面,可以在获取第一行后立即对结果集进行操作,而不用等到整个SQL 语句都执行完毕。当使用多个数据库连接时,必须指定可选参数link_identifier。

  1. dm_more_query_no_result

描述

执行多条无结果集的语句。

格式

int dm_more_query_no_result (string sql, resource link_identifier, int flag)

参数

参数 描述
sql 要执行的语句
link_identifier [IN]连接标识符
flagdm 出错是否返回

返回值

如果成功则返回TRUE,失败则返回FALSE。

  1. dm_db_query

描述

发送一条DM查询。

格式

resource dm_db_query ( string database, string query [, resource link_identifier])

参数

参数 描述
database [IN]指定的数据库名称
query [IN]查询字符串
link_identifier [IN]连接标识符

返回值

根据查询结果返回一个正的DM结果资源号,出错时返回FALSE。

  1. dm_affected_rows

描述

取得前一次数据库操作INSERT、UPDATE 或DELETE所影响的记录行数。如果连接句柄没有指定,则默认使用最近一次由dm_connect()函数打开的连接句柄。

格式

int dm_affected_rows ( [resource link_identifier])

参数

参数 描述
link_identifier [IN]连接句柄

返回值

对于非dml语句(ddl语句),返回-1。

例1:当前一次数据库操作为INSERT、UPDATE 或 DELETE时返回该操作所影响的记录行数。

$ret = dm_query("delete from t1;");
$ret = dm_affected_rows($link); //返回delete操作实际影响的记录行数

例2:dm_more_query_no_result 和dm_unbuffered_query 都不缓存影响行数,因此返回值为-1。

dm_more_query_no_result("insert into t1 values(1);insert into t1 values(1);insert into t1 values(1);"); 
$ret = dm_affected_rows($link); //返回-1

例3:当结果集无法获取时返回值为-1。

$ret = dm_query("begin SELECT * from t;sELECT * from t; end;"); 
$ret1=dm_more_result($ret);  	//结果集无法获取
$ret2 = dm_affected_rows($link); //返回-1

例4:begin end均返回1。

$ret = dm_query("begin delete from t;delete from t; end;"); 
$ret1=dm_more_result($ret); 
$ret2 = dm_affected_rows($link); //返回1
  1. dm_escape_string

描述

转义一个字符串用于dm_query。转义单引号为’和`。

格式

string dm_escape_string ( string unescaped_string)

参数

参数 描述
unescaped_string [IN]被转义字符串

返回值

返回转义以后的字符串。

13.dm_fetch_array

描述

从结果集中取得一行作为关联数组,或数字数组,或二者兼有。

格式

array dm_fetch_array ( resource result [, int result_type])

参数

参数 描述
result [IN]结果集资源
result_type [IN]是一个常量,可以接受以下值:1(DM_ASSOC),2(DM_NUM)和 0(DM_BOTH),如果设为0,即DM_BOTH,将得到一个同时包含关联和数字索引的数组。如果设为1,即DM_ASSOC 只得到关联索引, 如果设为2,即DM_NUM 只得到数字索引,数字索引从0开始

返回值

返回从结果集取得的行生成的数组,默认双索引。如果没有更多行则返回FALSE。

例如

$ret = dm_query("SELECT * from t;");

$result1 = dm_fetch_array($ret,1);

if($result1){

echo $result1["C1"];

echo $result1["C2"];

echo 'success'; 

}

//或者

$ret = dm_query("SELECT * from t;");

$result1 = dm_fetch_array($ret,2);

if($result1){

echo $result1[0];

echo $result1[1];

echo 'success'; 

}

14.dm_fetch_assoc

描述

从结果集中取得一行作为关联数组。

格式

array dm_fetch_assoc ( resource result)

参数

参数 描述
result [IN]连接句柄

返回值

返回根据从结果集取得的行生成的关联数组,列名为索引。如果没有更多行则返回FALSE,可以获取全部结果集。

例如

$ret = dm_query("SELECT * from t;");

$result1 = dm_fetch_assoc($ret);

if($result1){

echo $result1["C1"];

echo $result1["C2"];

echo 'success'; 

}

15.dm_fetch_field

描述

从结果集中取得列信息并作为对象返回。

格式

object dm_fetch_field ( resource result [, int field_offset])

参数

参数 描述
result [IN]结果集资源
field_offset [IN]字段偏移,从0开始

返回值

返回一个包含字段信息的对象。

例如

$ret = dm_query("SELECT 1, 2 as c2, 3 as c3");
$col = dm_fetch_field($ret);
if($col){
	if($col->name != "1" || $col->table != "" || $col->auto_uniq != "-1"
		|| $col->max_length != "10" || $col->numeric != "1" || $col->blob != "-1"
		|| $col->type != "INTEGER" || $col->unsigned != "-1"){
	…
	}
}

16.dm_num_fields

描述

取得结果集中字段的数目。

格式

int dm_num_fields ( resource result)

参数

参数 描述
result [IN]结果集资源

返回值

返回结果集中字段的数目。

17.dm_fetch_lengths

描述

取得结果集中每个输出的长度。

格式

array dm_fetch_lengths ( resource result)

参数

参数 描述
result [IN]结果集资源

返回值

以数组返回取得的行中每个字段的长度,如果出错返回 FALSE。

18.dm_fetch_object

描述

从结果集中取得一行作为对象。

格式

object dm_fetch_object ( resource result)

参数

参数 描述
result [IN]结果集资源

返回值

返回根据所取得的行生成的对象,列名为索引。如果没有更多行则返回FALSE。

例如

$result1 = dm_fetch_object($ret);
if($result1){
  echo $result1->C1;
  echo $result1->C2;
}

19.dm_fetch_row

描述

从结果集中取得一行作为枚举数组。

格式

array dm_fetch_row ( resource result)

参数

参数 描述
result [IN]结果集资源

返回值

返回根据所取得的行生成的数组,列序号为索引,从0开始。如果没有更多行则返回FALSE。

例如

$ret = dm_query( "SELECT 1 as c1, 2 as c2, 3 as c3");

$result1 = dm_fetch_row($ret);

if($result1[0] != "1" || $result1[1] != "2" || $result1[2] != "3"){…}

20.dm_field_flags

描述

从结果中取得和指定字段关联的标志。

格式

string dm_field_flags ( resource result, int field_offset)

参数

参数 描述
result [IN]结果集资源
field_offset [IN]字段偏移,从0开始

返回值

返回指定字段的字段标志。每个标志都用一个单词表示,之间用一个空格分开。

例如

$ret = dm_exec($link,"SELECT * from t1;");
$col = dm_field_flags($ret, 0);

21.dm_field_len

描述

返回指定字段的固定长度(精度)。

格式

int dm_field_len ( resource result, int field_offset)

参数

参数 描述
result [IN]结果集资源
field_offset 结果集中列的偏移,从0开始

返回值

返回指定字段的固定长度。

22.dm_field_name

描述

取得结果中指定字段的字段名。

格式

string dm_field_name ( resource result, int field_index)

参数

参数 描述
result [IN]结果集资源
field_index [IN]字段索引号,从0开始

返回值

返回指定字段索引的字段名。result 必须是一个合法的结果标识符,field_index是该字段的数字偏移量。

23.dm_field_seek

描述

将结果集中的指针设定为指定的字段偏移量。

格式

int dm_field_seek ( resource result, int field_offset)

参数

参数 描述
result [IN]结果集资源
field_offset [IN]字段偏移,从0开始

返回值

返回指定字段的上一个字段偏移量。

例如

$ret = dm_query("SELECT 1 c1, 2 as c2, 3 as c3");
dm_field_seek($ret, 0)  ;
{
	$col = dm_fetch_field($ret);
	if($col->name == "C1"){
	$result="success"; 
}

24.dm_field_table

描述

取得指定字段所在的表名。

格式

string dm_field_table ( resource result, int field_offset)

参数

参数 描述
field_offset [IN]字段偏移
result [IN]结果集资源

返回值

返回指定字段所在的表名。

25.dm_field_type

描述

取得结果集中指定字段的类型。

格式

string dm_field_type ( resource result, int field_offset)

参数

参数 描述
field_offset [IN]字段偏移
result [IN]结果集资源

返回值

返回字段类型有“int”,“real”,“char”,“blob”等。

26.dm_free_result

描述

释放结果内存。

格式

bool dm_free_result ( resource result)

参数

参数 描述
result [IN]结果集资源

返回值

如果成功则返回TRUE,失败则返回FALSE。

27.dm_get_server_info

描述

取得 DM 服务器信息。

格式

string dm_get_server_info ( [resource link_identifier])

参数

参数 描述
link_identifier [IN]连接标识符

返回值

返回 link_identifier 所使用的服务器版本。如果省略link_identifier,则使用上一个打开的连接。

28.dm_list_fields

描述

列出 DM 结果中的字段。

格式

resource dm_list_fields ( string database_name, string table_name [, resource
link_identifier[,string owner_name r[,string field_name]]])

参数

参数 描述
database_name [IN]数据库名
table_name [IN]表名
link_identifier [IN]连接标识符
owner_name 模式名
field_name 指定列名

返回值

返回一个结果指针。

$ret = dm_list_fields("SYSTEM", "T1"); 
$col = dm_fetch_field($ret);
	while($col)
	{
	  if($col->name == "CT1"){ 
      $flag= TRUE;
	  break;
	}
	else{  
	  $result="fail"; 
		}
		$col = dm_fetch_field($ret);
	}

29.dm_list_tables

描述

列出 DM 数据库中的表。

格式

resource dm_list_tables ( string database [, resource link_identifier[, string \$owner [, string \$ name ]]])

参数

参数 描述
database_name [IN]数据库名,忽略
link_identifier [IN]连接标识符
owner 模式名
name 表名

返回值

返回一个结果指针。

30.dm_num_rows

描述

取得结果集中行的数目。

格式

int dm_num_rows ( resource result)

参数

参数 描述
result [IN]结果集

返回值

返回结果集中行的数目。此命令仅对SELECT语句有效。

31.dm_ping

描述

Ping一个服务器连接,如果没有连接则重新连接。

格式

bool dm_ping ( [resource link_identifier])

参数

参数 描述
link_identifier [IN]连接标识符

返回值

如果到服务器的连接可用则dm_ping()返回TRUE,否则返回FALSE。

32.dm_more_result

描述

取得下一个结果集。释放当前结果集。

格式

mixed dm_more_result ( resource result )

参数

参数 描述
result [IN]结果集

返回值

恒为TRUE。

例如

//错误用法:
$ret = dm_query("begin SELECT * from t;delete * from t; end;");  
$ret1=dm_more_result($ret);
//正确用法:
$ret = dm_query("begin SELECT * from t; SELECT * from t;end;");  
$ret1=dm_more_result($ret);

33.dm_result

描述

取得一行结果数据。

格式

mixed dm_result ( resource result, int row [, mixed field])

参数

参数 描述
result [IN]结果集
row [IN]指定行序号(从0开始)
field [IN]指定列索引(从0开始)或列名称

返回值

返回 DM 结果集中一个单元(第row +1行 第field+1列)的内容。Row为也可以为字符串((单引号或双引号的数字),若为无效字符串时,默认是第一行。列名称大小写不区分。第三个参数为可选参数,默认第一列。

例如:

SQL> select * from member;

行号       member_name C0
---------- ----------- -----------
1          小明        NULL
2          小红        NULL
3          小日        100
$ret = dm_query("SELECT  * from member");
$result = dm_result($ret,  '2', 'C0');

34.dm_insert_id

描述

取得上一步INSERT操作产生的ID。

格式

int dm_insert_id ( [resource link_identifier])

参数

参数 描述
link_identifier [IN]连接标识符

返回值

返回给定的link_identifier中上一步INSERT 查询中产生的AUTO_INCREMENT的ID号。如果没有指定link_identifier,则使用上一个打开的连接。如果上一查询没有产生AUTO_INCREMENT的值,则dm_insert_id()返回0。

35.dm_tablename

描述

取得表名。

格式

string dm_tablename ( resource result, int i)

参数

参数 描述
result [IN]表结果集
i [IN]表索引序号,从0开始

返回值

接受dm_list_tables()返回的结果指针以及一个整数索引作为参数并返回表名。

例如

$ret = dm_list_tables("SYSTEM", $link, "%", "T1");
$row = 0;
$name = dm_tablename($ret, $row);
while($name){
	if($name == "T1"){
					…….
				}
	$row = $row + 1;
	$name = dm_tablename($ret, $row);
	}

36.dm_data_seek

描述

移动内部结果的指针。

格式

bool dm_data_seek ( resource result_identifier, int row_number)

参数

参数 描述
result_identifier [IN]结果集
row_number [IN]表索引序号,从0开始

返回值

指定的结果标识所关联的DM结果内部的行指针移动到指定的行号。

37.dm_set_object_name_case

描述

设置使用列名称时的大小写方式。

格式

bool dm_set_object_name_case(resource link_identifier, int case_sensitive)

参数

参数 描述
link_identifier [IN]连接标识符
case_sensitive 大小写方式。1:小写; 2:大写; 0:保持大小写

返回值

设置成功,返回TRUE;否则返回FALSE。

38.dm_prepare

描述

准备一条语句

格式

resource dm_prepare ( string query [, resource link_identifier])

参数

参数 描述
query [IN]查询字符串
link_identifier [IN]连接标识符

返回值

在准备成功时返回一个资源标识符,出错时返回FALSE。

39.dm_commit

描述

提交一个事务。

格式

bool dm_commit (resource link_identifier)

参数

参数 描述
link_identifier [IN]连接标识符

返回值

成功返回TRUE,失败返回FALSE。

40.dm_execute

描述

执行一条语句。(包括准备和执行,可以带绑定参数)

格式

Resource  dm_execute (resource link_identifier, string query[, array $parameters_array])

参数

参数 描述
link_identifier [IN]连接标识符
query [IN]查询字符串
$parameters_array 参数组成的数组

返回值

在执行成功时返回一个资源标识符,出错时返回FALSE。

例如

$a = 1;
$query = "INSERT INTO t2(c0)  VALUES(?)";  
$result = dm_execute($link, $query, array($a)); 
$query = "INSERT INTO t2(c0)  VALUES(10)"; 
$result = dm_execute($link, $query ) or die("Query failed : " . dm_error()); 

41.dm_abort

描述

回滚一个事务。

格式

bool dm_abort (resource link_identifier)

参数

参数 描述
link_identifier [IN]连接标识符

返回值

成功返回TRUE,失败返回FALSE。

42.dm_begin_trans

描述

设置事务为不自动提交。

格式

bool dm_begin_trans (resource link_identifier)

参数

参数 描述
link_identifier [IN]连接标识符

返回值

成功返回TRUE,失败返回FALSE。

43.dm_get_version

描述

获得服务器版本号。

格式

char*  dm_get_version (resource link_identifier)

参数

参数 描述
link_identifier [IN]连接标识符

返回值

返回dmversion字符串。

6.4.2 PHP 7.X接口

6.4.2.1 和PHP 5.X同名接口

下面是PHP 7.X中和PHP 5.X同名的接口,但是功能和参数等和PHP 5.X略有不同。

  1. dm_prepare

描述

准备一条语句

格式

resource dm_prepare ([resource link_identifier, string query)

参数

参数 描述
query [IN]查询字符串
link_identifier [IN]连接标识符

返回值

在准备成功时返回一个资源标识符,出错时返回FALSE。

2.dm_execute

描述

执行一条准备过的语句(可以带有绑定参数)。

格式

resource dm_execute (resource result , array $parameters_array )

参数

参数 描述
result 准备过的资源标识符
$parameters_array [IN]参数数组

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE。

例如:

$a = 1;
$b = 2;
$c = 3;
$stmt = dm_prepare($link, 'insert into t values(?,?,?)');
$result = dm_execute($stmt, array($a,$b,$c));

3.dm_fetch_array

描述

指定行号从结果集中取得一行作为关联数组。

格式

array dm_fetch_array ( resource result [,int rownum])

参数

参数 描述
result [IN]结果集资源
rownum [IN]取得的行号。可选参数,缺省从1开始

返回值

返回根据指定行号从结果集取得生成的数组,列名为索引。如果没有更多行则返回FALSE。如果rownum=0或缺省,则获取游标的下一行。可代替PHP 5.x中的dm_fetch_array以及dm_fetch_length。

例如

//PHP 5.x中利用dm_fetch_lengths获取结果集中所有列长度数组

$ret = dm_exec($link,"SELECT * from T1");

$collens = dm_fetch_lengths($ret);
 

//PHP 7.x中利用dm_fetch_array获取结果集中的列长度

$ret = dm_exec($link,"SELECT * from T1");

$colval= dm_fetch_array($ret);

//建议直接查看$colval[“列名”]对象的实际长度以获取该列长度

4.dm_fetch_row

描述

从结果集中取得一行数据。

格式

bool dm_fetch_row ( resource result [,int rownum])

参数

参数 描述
result [IN]结果集资源
rownum [IN]取得的行号。可选参数,缺省从1开始。

返回值

成功获取到数据返回TRUE,如果没有更多行则返回FALSE。可代替PHP 5.x中的dm_fetch_row、dm_data_seek以及dm_fetch_assoc。

例如

//PHP 5.x中利用dm_data_seek取得第三行结果集

$ret = dm_query("SELECT * from t1");

dm_data_seek($ret, 2);   

$result = dm_fetch_object($ret);


//PHP 7.x中利用dm_fetch_row取得第三行结果集

dm_fetch_row($ret, 3);

//PHP 7.x访问结果集的第一列

$val = dm_result($ret, 1);

5.dm_fetch_object

描述

从结果集中取得一行作为对象。

格式

object dm_fetch_object ( resource result   [, int rownumber])

参数

参数 描述
result [IN]结果集资源
rownumber 行号。可选参数,缺省从1开始

返回值

返回根据所取得的行生成的对象,列名为索引,借助dm_result函数可以以列序号为索引进行查找。如果没有更多行则返回FALSE。

例如

$result1 = dm_fetch_object($ret, 2);
if($result1){ 
	echo $result1->C1;
    echo $result1->C2;
	$val1 = dm_result($ret,1);
	echo $val1;
}

6.dm_result

描述

取得结果数据。

格式

mixed dm_result ( resource result, mixed field )

参数

参数 描述
result [IN]结果集
field [IN]指定列索引(从1开始)或列名称(单引号或双引号)

返回值

例如

SQL> SELECT * from t2; 
行号       member_name c0
---------- ----------- -----------
1          小明         1
2          小红         2
$ret = dm_query("SELECT * from t2");
$result = dm_result($ret,  1);--第1列
$result = dm_result($ret,  “c0”);--c0列 

//可以按下面方式遍历所有行
while(dm_fetch_row($ret)){
	$result1 = dm_result($ret, "c0");
}

7.dm_connect

描述

建立一个到DM服务器的连接。

格式

resource dm_connect ([string server [, string username [, string password [,bool $client_flags]]]])

参数

参数 描述
server [IN]服务器名称,缺省使用php.ini中的配置
username [IN]用户名称,缺省使用php.ini中的配置
password [IN]用户密码,缺省使用php.ini中的配置
client_flags 保留参数,不起作用

返回值

如果成功则返回一个连接标识,失败则返回FALSE。

例如:

dm_connect("192.168.0.25", "SYSDBA", "SYSDBA", 1);

8.dm_pconnect

描述

打开一个到DM服务器的持久连接。

格式

resource dm_pconnect ([string server [, string username [, string password[,bool $client_flags]]]])

参数

参数 描述
server [IN]服务器名称,缺省使用php.ini中的配置
username [IN]用户名称,缺省使用php.ini中的配置
password [IN]用户密码,缺省使用php.ini中的配置
client_flags 保留参数,不起作用

返回值

如果成功则返回一个正的持久连接标识符,出错则返回FALSE。

9.dm_error

用法同dm_errno(PHP 5.x)。

10.dm_ping

描述

Ping一个服务器连接,如果没有连接则重新连接。

格式

bool dm_ping (resource link_identifier)

参数

参数 描述
link_identifier [IN]连接标识符

返回值

如果到服务器的连接可用则返回TRUE,否则返回FALSE。

11.dm_get_server_info

描述

取得DM服务器信息。

格式

string dm_get_server_info (resource link_identifier)

参数

参数 描述
link_identifier [IN]连接标识符

返回值

返回link_identifier所使用的服务器版本。

6.4.2.2 PHP 7.X新增接口

  1. dm_exec

描述

执行一条语句或查询。

格式

resource dm_exec(resource link_identifier [,string query])

参数

参数 描述
link_identifier [IN]连接标识符
query [IN]语句字符串

返回值

作用同dm_query(PHP 5.x),可代替PHP 5.x中的dm_query、dm_unbuffered_query、dm_more_query_no_result以及dm_db_query。

例如:

$result = dm_exec($link, $query);
$result = dm_exec($link, “ddl语句”); 

2.dm_tables

描述

列出 DM 数据库中的表。

格式

resource 
	dm_tables ( resource $link [, string $qualifier [, string $owner [, string $name [, string $types ]]]] )

参数

参数 描述
link [IN]连接句柄
qualifier 库名,忽略该参数
owner 模式名
name 表名
types 表or视图。值:SYSTEM TABLE,TABLE,VIEW

返回值

在获取成功时返回一个资源标识符,出错时返回FALSE。可代替PHP 5.x中的dm_list_tables。

3.dm_columns

描述

列出 DM 数据库中的列。

格式

resource dm_columns ( resource $link[, string $qualifier [, string $schema [, string $table_name [, string $column_name ]]]] ) 

参数

参数 描述
link [IN]连接句柄
qualifier 库名
schema 模式名
table_name 表名
column_name 列名过滤格式,如%

返回值

在获取成功时返回一个资源标识符,出错时返回FALSE。

4.dm_result_all

描述

取得全部结果数据,并打印成html格式。

格式

int dm_result_all ( resource $result,  [, string $format])

参数

参数 描述
result [IN]结果集
format html格式中<table标签追加属性> ' id="c1",age="c2"'

返回值

返回的是结果集行数,错误时返回FALSE。

如:dm_result_all($ret, 'id="c1", age="c2"');

执行结果如下:

<table id="c1", age="c2" >

<tr><th>C1</th><th>C2</th></tr>

<tr><td>10</td><td>20</td></tr>

5.dm_binmode

描述

二进制类型数据的处理方式。该函数用来对输入的二进制类型列数据进行转换处理。二进制类型有:BINARY、VARBINARY及BLOB三种。

当二进制SQL数据转换为字符串时,源数据的每个字节(8位)表示为两个ASCII字符,这些字符是由十六进制数字的ASCII字符表示。例如,BINARY类型的
00000001 被转为十六进制的“01”,BINARY类型的11111111 被转为十六进制的“FF”。

格式

bool  dm_binmode ( resource $ link_identifier , int $mode) 

参数

参数 描述
link_identifier [IN]连接标识符
mode 模式取值: DM_BINMODE_PASSTHRU 不处理 DM_BINMODE_RETURN 转成16进制 DM_BINMODE_CONVERT 转成字符串

返回值

在获取成功时返回TRUE,出错时返回FALSE。

6.dm_close_all

描述

关闭所有连接

格式

void dm_close_all ( void )

参数

返回值

7.dm_autocommit

描述

设置事务是否为自动提交。

格式

bool dm_autocommit (resource link_identifier, bool flag)

参数

参数 描述
link_identifier [IN]连接标识符
flag 取值: 1 是 0 否

返回值

成功返回TRUE,失败返回FALSE。可代替PHP 5.x中的dm_begin_trans,只需将flag设为0,即可设置事务为不自动提交。

8.dm_cursor

描述

获取游标名

格式

string  dm_cursor ( resource  $result_id )

参数

参数 描述
link_identifier [IN]结果集资源

返回值

游标名

9.dm_errormsg

用法同dm_error(PHP 5.x)。

10.dm_fetch_into

描述

获取一行结果集到数组中。

格式

int dm_fetch_into(resource link_identifier,array $parameters_array [, int $rownumber])

参数

参数 描述
link_identifier [IN]连接标识符
parameters_array Array数组
rownumber 行号

返回值

返回结果集的列数,失败返回FALSE。

11.dm_field_scale

描述

获取结果集中指定字段的长度。

格式

int dm_field_scale ( resource result, int field_offset)

参数

参数 描述
result [IN]结果集资源
field_offset 字段序号,起始值为1

返回值

指定字段的长度。

12.dm_field_num

描述

获取结果集中指定字段的序号。

格式

int dm_field_num ( resource $result_id , string $field_name ) 
参数 描述
link_identifier [IN] 结果集资源

返回值

返回结果集字段的序号或失败返回FALSE。

13.dm_field_name

描述

取得结果中指定字段的字段名。

格式

string dm_field_name ( resource result, int field_index)

参数

参数 描述
result [IN]结果集资源
field_index [IN]字段索引号,起始值为1

返回值

返回指定字段索引的字段名。result 必须是一个合法的结果标识符,field_index是该字段的数字偏移量。

14.dm_longreadlen

描述

设置变长类型读取的最大长度。

格式

bool  dm_longreadlen ( resource $ link_identifier , int $length)

参数

参数 描述
link_identifier [IN]连接标识符
length 读取的最大长度

返回值

在获取成功时返回TRUE,出错时返回FALSE。

15.dm_next_result

描述

切换结果集。单条sql不能切换,必须是一个过程中产生了多个结果集。

格式

bool  dm_next_result ( resource $result_id )

参数

参数 描述
result_id [IN]结果集资源

返回值

有下一个结果集返回TRUE,无结果集返回FALSE。可代替PHP 5.x中的dm_more_result。

16.dm_rollback

用法同dm_abort(PHP 5.x)。

17.dm_setoption

描述

设置dm连接和语句的相关属性。

格式

bool  dm_setoption ( resource $id , int $function , int $option , int $param )

参数

参数 描述
id 连接标识符或者结果集资源
function 取值: 1:conn 2:stmt
option 属性ID。 当function为1时,不同属性对应的属性ID为: DSQL_ATTR_ACCESS_MODE 101
DSQL_ATTR_AUTOCOMMIT 102
DSQL_ATTR_CONNECTION_TIMEOUT 113
DSQL_ATTR_LOGIN_TIMEOUT 103
DSQL_ATTR_PACKET_SIZE 112
DSQL_ATTR_TRACE 104
DSQL_ATTR_TRACEFILE 105
DSQL_ATTR_TXN_ISOLATION 108
DSQL_ATTR_CURRENT_CATALOG 109
DSQL_ATTR_CONNECTION_DEAD 1209
DSQL_ATTR_LOGIN_PORT 12350
DSQL_ATTR_STR_CASE_SENSITIVE 12351
DSQL_ATTR_LOGIN_USER 12352
DSQL_ATTR_MAX_ROW_SIZE 12353
DSQL_ATTR_CURRENT_SCHEMA 12354
DSQL_ATTR_INSTANCE_NAME 12355
DSQL_ATTR_LOGIN_SERVER 12356
DSQL_ATTR_SERVER_CODE 12349
DSQL_ATTR_APP_NAME 12357
DSQL_ATTR_COMPRESS_MSG 12358
DSQL_ATTR_USE_STMT_POOL 12359
DSQL_ATTR_SERVER_MODE 12360
DSQL_ATTR_SERVER_VERSION 12400
DSQL_ATTR_SSL_PATH 12401
DSQL_ATTR_SSL_PWD 12402
DSQL_ATTR_MPP_LOGIN 12403
DSQL_ATTR_TRX_STATE 12404
DSQL_ATTR_UKEY_NAME 12405
DSQL_ATTR_UKEY_PIN 12406
DSQL_ATTR_CLIENT_VERSION 12407
DSQL_ATTR_RWSEPARATE 12408
DSQL_ATTR_RWSEPARATE_PERCENT 12409
DSQL_ATTR_CURSOR_ROLLBACK_BEHAVIOR 12410
DSQL_ATTR_UDP_FLAG 12411
DSQL_ATTR_OSAUTH_TYPE 12412
DSQL_ATTR_INET_TYPE 12413
DSQL_ATTR_DDL_AUTOCOMMIT 12414
DSQL_ATTR_LOGIN_CERTIFICATE 12415
DSQL_ATTR_LOCAL_CODE 12345
DSQL_ATTR_LANG_ID 12346
DSQL_ATTR_CONNECTION_POOLING 12347
DSQL_ATTR_TIME_ZONE 12348
DSQL_ATTR_CON_CACHE_SZ 12349
当function为2时,不同属性对应的属性ID为:
DSQL_ATTR_ASYNC_ENABLE 4
DSQL_ATTR_CONCURRENCY 7
DSQL_ATTR_CURSOR_TYPE 6
DSQL_ATTR_ENABLE_AUTO_IPD 15
DSQL_ATTR_FETCH_BOOKMARK_PTR 16
DSQL_ATTR_KEYSET_SIZE 8
DSQL_ATTR_MAX_LENGTH 3
DSQL_ATTR_MAX_ROWS 1
DSQL_ATTR_NOSCAN 2
DSQL_ATTR_PARAM_BIND_OFFSET_PTR 17
DSQL_ATTR_PARAM_BIND_TYPE 18
DSQL_ATTR_PARAM_OPERATION_PTR 19
DSQL_ATTR_PARAM_STATUS_PTR 20
DSQL_ATTR_PARAMS_PROCESSED_PTR 21
DSQL_ATTR_PARAMSET_SIZE 22
DSQL_ATTR_QUERY_TIMEOUT 0
DSQL_ATTR_RETRIEVE_DATA 11
DSQL_ATTR_ROW_BIND_OFFSET_PTR 23
DSQL_ATTR_ROW_BIND_TYPE 5
DSQL_ATTR_ROW_NUMBER 14
DSQL_ATTR_ROW_OPERATION_PTR 24
DSQL_ATTR_ROW_STATUS_PTR 25
DSQL_ATTR_ROWS_FETCHED_PTR 26
DSQL_ATTR_ROW_ARRAY_SIZE 27
DSQL_ATTR_SIMULATE_CURSOR 10
DSQL_ATTR_USE_BOOKMARKS 12
DSQL_ATTR_ROWSET_SIZE 9
param 属性值。各属性ID对应的属性值请参考DPI章节

返回值

在设置成功时返回TRUE,出错时返回FALSE。可代替PHP 5.x中的dm_set_connect。

18.dm_specialcolumns

描述

返回特殊列

格式

resource dm_specialcolumns ( resource $link_identifier , int $type , string $qualifier , string $table , int $scope , int $nullable )

参数

参数 描述
link_identifier [IN]连接标识符
type 忽略
qualifier 库名,忽略
Table 表明
scope 模式
nullable 是否为空

返回值

返回一个资源id。

19.dm_statistics

描述

获取表及其索引的信息

格式

resource dm_statistics ( resource $ link_identifier , string $qualifier , string $owner , string $table_name , int $unique , int $accuracy )

参数

参数 描述
link_identifier [IN]连接标识符
qualifier 库名
owner 模式名
table_name 表名
unique unique属性。取值: SQL_INDEX_UNIQUE 表示只返回unique索引 SQL_INDEX_ALL 表示返回所有索引
accuracy 忽略

返回值

返回一个结果集或失败返回FALSE。

20.dm_primarykeys

描述

获取表的主键。

格式

resource dm_primarykeys ( resource $ link_identifier , string $qualifier , string $owner , string $ table )

参数

参数 描述
link_identifier [IN]连接标识符
Qualifier 库名
owner 模式名
table 表名

返回值

返回一个结果集或失败返回FALSE。

21.dm_columnprivileges

描述

列出列的权限。

格式

resource  dm_columnprivileges ( resource $ link_identifier , string $qualifier , string $owner , string $name string column_name)

参数

参数 描述
link_identifier [IN]连接标识符
qualifier 库名
owner 模式名
name 表名
column_name 列名

返回值

返回一个结果集或失败返回FALSE。

22.dm_tableprivileges

描述

列出表的权限。

格式

resource dm_tableprivileges ( resource $ link_identifier , string $qualifier , string $owner , string $name )

参数

参数 描述
link_identifier [IN]连接标识符
qualifier 库名
owner 模式名
name 表名

返回值

返回一个结果集或失败返回FALSE。

23.dm_foreignkeys

描述

获取表的外键。

格式

resource  dm_foreignkeys ( resource $ link_identifier , string $pk_qualifier , string $pk_owner , string $pk_table , string $fk_qualifier , string $fk_owner , string $fk_table )

参数

参数 描述
link_identifier [IN]连接标识符
pk_qualifier 主键库名
pk_owner 主键模式名
pk_table 主键表名
fk_qualifier 外键库名
fk_owner 外键模式名
fk_table 外键表名

返回值

返回一个结果集或失败返回FALSE。

24.dm_procedures

描述

列出DM 数据库中的全部过程或指定的过程。

格式

resource  dm_procedures ( resource $link_identifier )

resource dm_procedures (resource $link_identifier, string $qualifier, string $owner, string $name )

参数

参数 描述
link_identifier [IN]连接标识符
qualifier 库名
owner 模式名,支持使用通配符匹配方式:"%" 来匹配零到多个字符,"_" 来匹配单个字符
name 过程名,支持使用通配符匹配方式:"%" 来匹配零到多个字符,"_" 来匹配单个字符

返回值

在获取成功时返回一个资源标识符,出错时返回FALSE。

25.dm_procedurecolumns

描述

列出 DM 数据库中过程的列。

格式

resource  dm_procedurecolumns ( resource $link_identifier ) 

resource  dm_procedurecolumns (resource $link_identifier, string $qualifier, string $owner, string $proc, string $column )

参数

参数 描述
link_identifier [IN]连接标识符
qualifier 库名
owner 模式名
proc 过程名
column 列名

返回值

在获取成功时返回一个资源标识符,出错时返回FALSE。

微信扫码
分享文档
扫一扫
联系客服