php操作数据库有很多种方式,如mysql,mysqli,odbc,pdo等。MySQL 是 PHP 操作 MySQL 数据库最原始的 Extension。MySQLi 的 i 代表 Improvement ,提供了相对进阶的功能,就 Extension 而言,本身也增加了安全性,这都只是操作特定种类的数据库的,当你更换其他类型的数据库时又得使用其他类型数据库的操作方法来操作数据库,也就是得重写代码,这是很麻烦的。有没有一种方法可以是通用型的,使得可以一次编写多次使用,兼容各种数据库呢?答案当然是肯定的,那就是obbc以及pdo了。pdo是php 5新出的用来操作各种数据库的扩展,是专属于php的,就类似于Java的jdbc。这个后面再讲。现在先讲一讲odbc。
什么是ODBC?
ODBC 是一个软件驱动程序系统,用于连接编程语言与数据存储。ODBC 是一个免费的开放源码系统,出现于 1992 年,它试图通过编程语言和数据库查询访问(SQL 标准化)来标准化连接方法,比如功能和配置。
ODBC 的作用是充当接口或连接器,它具有双重设计目标:首先,对于 ODBC 系统,它充当的是编程语言系统,其次,对于数据存储系统,它充当的是 ODBC 系统。所以,ODBC 需要一个 “对 ODBC 而言是编程语言” 的驱动程序(例如 PHP-ODBC 库)和一个 “对数据存储系统而言是 ODBC” 的驱动程序(比如 MySQL-ODBC 库)。除了 ODBC 系统本身之外,ODBC 还可以处理数据源的配置,允许数据源和编程语言之间存在模糊性。
怎么使用odbc?
当使用odbc时, PHP 开发变得 “与数据库连接器无关”。它对数据库(比如 MySQL、PostgreSQL、SQLite、Microsoft SQL Server®、IBM® DB2®、Sybase、OpenLink Virtuoso、FileMaker 和 Microsoft Office® Access®)使用像 odbc_query()
这样的函数。还可以将 ODBC 用于 CSV 和 Excel 电子表格,具体取决于正确的 ODBC 驱动程序设置。下面看看怎么使用:
1.首先odbc扩展并开启,通过phpinfo()查看到该模块并且状态为enabled;
2.连接到 ODBC
odbc_connect() 函数用于连接到 ODBC 数据源。该函数有四个参数:数据源名、用户名、密码以及可选的指针类型。
odbc_exec() 函数用于执行 SQL 语句。
3.取回记录
//odbc_fetch_row() 函数用于从结果集中返回记录。如果能够返回行,则函数返回 true,否则返回 false。
//该函数有两个参数:ODBC 结果标识符和可选的行号:
odbc_fetch_row($rs)
4.从记录中取回字段
odbc_result() 函数用于从记录中读取字段。该函数有两个参数:ODBC 结果标识符和字段编号或名称。 下面的代码行从记录中返回第一个字段的值: $compname=odbc_result($rs,1); 下面的代码行返回名为 "CompanyName" 的字段的值: $compname=odbc_result($rs,"CompanyName");
5.关闭 ODBC 连接
odbc_close() 函数用于关闭 ODBC 连接。 odbc_close($conn);
注:其他操作函数:http://php.net/manual/zh/ref.uodbc.php
ODBC 实例
下面的实例展示了如何首先创建一个数据库连接,接着创建一个结果集,然后在 HTML 表格中显示数据。
<html> <body> <?php $conn=odbc_connect(‘northwind‘,‘‘,‘‘); if (!$conn){ exit("Connection Failed: " . $conn);} $sql="SELECT * FROM customers"; $rs=odbc_exec($conn,$sql); if (!$rs){ exit("Error in SQL");} echo "<table><tr>"; echo "<th>Companyname</th>"; echo "<th>Contactname</th></tr>"; while (odbc_fetch_row($rs)){ $compname=odbc_result($rs,"CompanyName"); $conname=odbc_result($rs,"ContactName"); echo "<tr><td>$compname</td>"; echo "<td>$conname</td></tr>"; } odbc_close($conn); echo "</table>"; ?> </body> </html>