Download - 第 24 章 PHP 与 ODBC 数据源

Transcript
Page 1: 第 24 章  PHP 与 ODBC 数据源

11

第第 2424 章 章 PHPPHP 与与 ODBCODBC 数据数据源源

第三部分 网站设计技术第三部分 网站设计技术

Page 2: 第 24 章  PHP 与 ODBC 数据源

22

ODBCODBC 的连结与关闭的连结与关闭 ODBCODBC 数据库的数据库的 SQLSQL 查询查询 ODBCODBC 数据库的查询数据库的查询 ODBCODBC 数据库的操作数据库的操作

概 述概 述

Page 3: 第 24 章  PHP 与 ODBC 数据源

1.ODBC1.ODBC

Open Database ConnectivityOpen Database Connectivity 开放数据库连接开放数据库连接 数据源名数据源名 Data Source NameData Source Name DSNDSN

Page 4: 第 24 章  PHP 与 ODBC 数据源

2.2. 安装安装 MYODBCMYODBC 驱动程序驱动程序 Open Database ConnectivityOpen Database Connectivity 开放数据库连接开放数据库连接 数据源名数据源名 Data Source NameData Source Name DSNDSN

Page 5: 第 24 章  PHP 与 ODBC 数据源
Page 6: 第 24 章  PHP 与 ODBC 数据源
Page 7: 第 24 章  PHP 与 ODBC 数据源
Page 8: 第 24 章  PHP 与 ODBC 数据源
Page 9: 第 24 章  PHP 与 ODBC 数据源
Page 10: 第 24 章  PHP 与 ODBC 数据源

2.2.

Page 11: 第 24 章  PHP 与 ODBC 数据源

3. PHP3. PHP 语言中对语言中对 ODBCODBC 的操作的操作 建立和数据的连接建立和数据的连接 执行一条执行一条 SQLSQL 语句,或执行查询语句。语句,或执行查询语句。 显示操作结果数据。显示操作结果数据。 关闭到数据库的连接 关闭到数据库的连接

Page 12: 第 24 章  PHP 与 ODBC 数据源

4.4. 通过通过 ODBCODBC 对数据库的连结与关闭对数据库的连结与关闭 非永久性连接:非永久性连接: int odbc_connect(int odbc_connect( 数据源名数据源名 ,, 用户名用户名 ,, 口令口令 ,, 游游

标类型标类型 );); 永久性连接:永久性连接: int odbc_pconnect(int odbc_pconnect( 数据源名数据源名 ,, 用户名用户名 ,, 口令口令 ,, 游游

标类型标类型 );); 非永久性连接关闭非永久性连接关闭 int odbc_close(int odbc_close( 连接句柄连接句柄 );); int odbc_close_all(void);int odbc_close_all(void);

Page 13: 第 24 章  PHP 与 ODBC 数据源

1313

常用的游标类型有:常用的游标类型有: SQL_CUR_USE_IF_NEEDEDSQL_CUR_USE_IF_NEEDED SQL_CUR_USE_ODBCSQL_CUR_USE_ODBC SQL_CUR_USE_DRIVERSQL_CUR_USE_DRIVER SQL_CUR_DEAFAULTSQL_CUR_DEAFAULT

对某些对某些 ODBCODBC 驱动程序,执行复杂的存贮过程,有可驱动程序,执行复杂的存贮过程,有可能会发生类似下面的错误“能会发生类似下面的错误“ Cannot open a curor Cannot open a curor on a stroed procedure that has anything other on a stroed procedure that has anything other than a single select statement”than a single select statement” ,将游标设置为,将游标设置为SQL_CUR_USE_ODBCSQL_CUR_USE_ODBC ,可以避免这个错误,可以避免这个错误

Page 14: 第 24 章  PHP 与 ODBC 数据源

4.4. 通过通过 ODBCODBC 对数据库的连结与关闭对数据库的连结与关闭

<body>

<?php

$db="odbc_db";

$user="root";

$passwd="your_password";

$db_i d=odbc_pconnect($db, $user, $passwd, SQL_CUR_USE_ODBC);

i f (!$db_i d)

{

echo "ODBC连接数据库失败!";

exi t;

}

el se

{

echo "ODBC连接数据库成功!";

odbc_cl ose(db_i d);

}

?>

</ body>

Page 15: 第 24 章  PHP 与 ODBC 数据源

5. 5. 通过通过 ODBCODBC 的的 SQLSQL 查询查询

格式格式 11 :: PHPPHP 直接向直接向 ODBCODBC 发送发送 SQL,SQL, 并立刻执并立刻执行行

int odbc_do(int odbc_do( 连接句柄连接句柄 ,, 查询语句查询语句 ););或或

int odbc_exec(int odbc_exec( 连接句柄连接句柄 ,, 查询语句查询语句 );); 格式格式 22 :: PHPPHP 先向先向 ODBCODBC 发送发送 SQL,SQL, 得到命令后得到命令后

再执行再执行 int odbc_prepare(int odbc_prepare( 连接句柄连接句柄 ,, 查询语句查询语句 );); int odbc_execute(prepare_id,[int odbc_execute(prepare_id,[ 参数数参数数

组组 ]);]);

Page 16: 第 24 章  PHP 与 ODBC 数据源

5.5.

<body>

<?php

$db="odbc_db";

$user="root";

$passwd="your_password";

$db_i d=odbc_pconnect($db, $user, $passwd, SQL_CUR_USE_ODBC);

$odbc_query="sel ect user, password f rom user";

$odbc_pre=odbc_prepare($db_i d, $odbc_query);

$odbc_run=odbc_execute($odbc_pre);

……

?>

</ body>

Page 17: 第 24 章  PHP 与 ODBC 数据源

6. 6. 通过通过 ODBCODBC 获取查询结果获取查询结果

每次读一条记录每次读一条记录 格式:格式: int odbc_fetch_row(int result_id, int odbc_fetch_row(int result_id, int[rownumber])int[rownumber])从结果集中度去某一个字段的值从结果集中度去某一个字段的值 格式:格式: int odbc_result(int result_id, int odbc_result(int result_id, mixed field);mixed field);获取查询结果集中的记录数获取查询结果集中的记录数 格式:格式: int odbc_num_rows(int result_id);int odbc_num_rows(int result_id);

Page 18: 第 24 章  PHP 与 ODBC 数据源

6. 6. 通过通过 ODBCODBC 获取查询结果获取查询结果

<?php

$db="odbc_l i brary"; / /现建立 l i brary数据源

$user="root";

$passwd="your_password";

$db_i d=odbc_pconnect($db, $user, $passwd, SQL_CUR_USE_ODBC);

$odbc_query="sel ect i d, cs_name, sex f rom cs_students";

$odbc_pre=odbc_prepare($db_i d, $odbc_query);

$res_i d=odbc_execute($odbc_pre);

i f (!$res_i d)

{

echo "ODBC连接数据库失败!";

exi t;

}

echo "ODBC连接数据库成功!";

echo odbc_num_rows($odbc_pre). "<br>";

whi l e (odbc_fetch_row($odbc_pre))

{

$str_i d=odbc_resul t($odbc_pre, 1);

$str_cs_name=odbc_resul t($odbc_pre, 2);

$str_sex=odbc_resul t($odbc_pre, 3);

echo "<br>";

echo "学号:". $str_i d. " ";

echo "姓名:". $str_cs_name. " ";

echo "性别:". $str_sex;

echo "<br>";

}

odbc_cl ose($db_i d);

?>

Page 19: 第 24 章  PHP 与 ODBC 数据源

6. 6. 通过通过 ODBCODBC 获取查询结果获取查询结果

制定序号的记录存于一个数组制定序号的记录存于一个数组 格式:格式: int odbc_fetch_into(int result_id,int odbc_fetch_into(int result_id, int [rownumber],array result_array);int [rownumber],array result_array);

<body>

<?php

$db="odbc_db";

$user="root";

$passwd="your_password";

$db_i d=odbc_pconnect($db, $user, $passwd, SQL_CUR_USE_ODBC);

$odbc_query="sel ect user, password f rom user";

$odbc_pre=odbc_prepare($db_i d, $odbc_query);

$g= odbc_fetch_i nto($odbc_pre, 2, &$a_res);

……

?>

</ body>

Page 20: 第 24 章  PHP 与 ODBC 数据源

6. 6. 通过通过 ODBCODBC 获取查询结果获取查询结果

查询结果以表格的形式输出到访问者的浏览器查询结果以表格的形式输出到访问者的浏览器上。上。 int odbc_result_all(int int odbc_result_all(int 结果结果 ,string ,string [[ 格式格式 ])])

<?php

$db="odbc_l i brary"; / /现建立 l i brary数据源

$user="root";

$passwd="your_password";

$db_i d=odbc_pconnect($db, $user, $passwd, SQL_CUR_USE_ODBC);

$odbc_query="sel ect i d, cs_name, sex f rom cs_students";

$odbc_pre=odbc_prepare($db_i d, $odbc_query);

$res_i d=odbc_execute($odbc_pre);

i f (!$res_i d)

{

echo "ODBC连接数据库失败!";

exi t;

}

echo "ODBC连接数据库成功!";

odbc_resul t_al l ($res_i d, “ border=0 cel l space=1 wi dth=75%” );

odbc_cl ose($db_i d);

?>

Page 21: 第 24 章  PHP 与 ODBC 数据源

6. 6. 通过通过 ODBCODBC 获取查询结果获取查询结果

获取指定字段的字段名称获取指定字段的字段名称 格式:格式: string odbc_fieldname(int result_id,string odbc_fieldname(int result_id,

int field_number);int field_number);获取指定字段的数据类型获取指定字段的数据类型 格式:格式: string odbc_field_type(int result_id,string odbc_field_type(int result_id,

int field_number);int field_number);获取指定字段的长度获取指定字段的长度 格式:格式: string odbc_field_len(int result_id,string odbc_field_len(int result_id,

int field_number);int field_number);

Page 22: 第 24 章  PHP 与 ODBC 数据源

7. 7. ODBCODBC的其他操作的其他操作

⒈ ⒈ 数据返回值的设定数据返回值的设定 odbc_binmodeodbc_binmode (( int int 结果结果 ,int ,int 模式) 模式) odbc_longreadlen(int odbc_longreadlen(int 结果结果 ,int ,int 长度长度 ))

⒉ ⒉ ODBCODBC 的事务处理 的事务处理 odbc_commit(int connection_id);odbc_commit(int connection_id);

odbc_autocommit(int connection_id,int odbc_autocommit(int connection_id,int [OnOff]) ⒊[OnOff]) ⒊ 查询设定 查询设定 odbc_setoption(int odbc_setoption(int 句柄,句柄, int int 功能,功能, int int 选项, 选项, int int 参数值 参数值 ))

Page 23: 第 24 章  PHP 与 ODBC 数据源

取消操作取消操作 格式:格式: int odbc_rollback(int int odbc_rollback(int connection_id);connection_id);释放资源释放资源 格式:格式: int odbc_free_result(int result_id);int odbc_free_result(int result_id);int odbc_cursorint odbc_cursor (( int int 连接句柄)连接句柄)

Page 24: 第 24 章  PHP 与 ODBC 数据源

2424

第第 2323 章 小结章 小结

ODBCODBC 的连结与关闭的连结与关闭 ODBCODBC 数据库的数据库的 SQLSQL 查询查询 ODBCODBC 数据库的查询数据库的查询 ODBCODBC 数据库的操作数据库的操作

Page 25: 第 24 章  PHP 与 ODBC 数据源

2525

第第 2323 章 思考问题章 思考问题

结 束结 束

什么是什么是 ODBCODBC ?? 数据源的含义是什么?数据源的含义是什么? 用户、系统和文件数据源有什么区别?用户、系统和文件数据源有什么区别? 在在 PHPPHP 中调用中调用 ODBCODBC 函数访问函数访问 MYSQLMYSQL 数据库的一数据库的一

般步骤是什么?般步骤是什么? PHPPHP 程序向程序向 ODBCODBC 发送发送 SQLSQL 指令有哪两种方式?指令有哪两种方式? 在进行在进行 ODBCODBC 的连接时,需要指定哪几个参数? 的连接时,需要指定哪几个参数?