UnixODBC使用指南(以PHP为例)
使用UnixODBC可以有效屏蔽不同数据库在数据连接层面上的区别。注意其对SQL层次上的区别无能为力,这种情况需要一个ORM。
在Unix/Linux上,ODBC不是一个系统服务,为使PHP能够使用UnixODBC,需在编译PHP时指定UnixODBC的位置,此后PHP即可在此处寻找ODBC库,不会使用操作系统提供的UnixODBC。
以PostGRE为例,从官网上下载ODBC驱动并编译安装后,首先对/{PREFIX}/etc文件夹下的驱动配置文件odbcinst.ini进行配置:
[pg]
Description = PostgreSQL Driver
Driver = /home/user/Software/database/unixODBC/pg/lib/psqlodbcw.so
Setup = /home/user/Software/database/unixODBC/pg/lib/psqlodbcw.so
Threading = 1
现在,这个自行定义的驱动的名字就叫pg。PostGRE提供了两个驱动,即ANSI编码的psqlodbca.so和Unicode的psqlodbcw.so,一般使用Unicode版本。随后对/{PREFIX}/etc/odbc.ini中的DSN进行配置:
[mydb]
Description = pg/SQL DSN
Driver = pg
Username = su
Password = 1234
Servername = 127.0.0.1
Port = 5432
Database = somedb
Servername就是服务器的域名。ODBC驱动会去连接127.0.0.1上名为somedb的数据库。数据库必须首先创建好。现在可以运行/{PREFIX}/bin/isql mydb查看连接情况:

如果想要记录ODBC日志,可在odbcinst.ini中添加:
[ODBC]
Trace = YES
TraceFile = /home/user/Software/database/unixODBC/log/log.txt
此时即可在Linux环境下,如Windows操作系统中一样使用ODBC:
$conn = odbc_connect("mydb");