微软对PHP的支持力度很大,在IIS下加入了PHP支持,支持PHP访问.Net组件,更重要的是发布了原生的SQL Server驱动来帮助PHP程序使用SQL Server数据库做开发。
公司的CRM产品使用PHP开发,使用ADODB统一数据库连接层,当初开发时,只支持MySQL一种数据库,后来,我通过PHP内置的MS SQL驱动来帮助系统支持SQL Server数据库,由于使用了ADODB,这个类库对于PHP内置的MS SQL驱动支持很好,而数据库函数相似度也很高,所以移植过程还算顺利,这个过程主要是对于系统中的一些不通用的sql语句进行修改,从而可以支持SQL Server数据库,其次就是改了分页函数的算法,支持SQL Server2005的ROWNUM函数,不过使用这个驱动的问题是对UTF-8的支持不佳,虽然CRM系统内部可以读取和写入中文,但是使用SQL Server Management Studio打开会发现里面都是乱码,对于某些企业而言,这是不可接受的,也不方便一些系统间的集成。
当微软发布PHP原生的SQL Server驱动第一版时候,我就曾经想要使用这个驱动开发访问SQL Server数据库,来达到更好的对于SQL Server的支持,毕竟微软开发的东西更有保障,可是最终没有成功,不成功的原因很多,主要是:
1. ADODB内对于PHP原生的SQL Server驱动支持不够,如果要使用它必须自己开发对应的内容,这个要耗费大量的时间。
2. PHP原生的SQL Server驱动同样不支持UTF-8编码。
3. 最后也是最重要的问题:关键函数和特性的缺失,包括num_rows函数和可滚动结果集的特性,而CRM系统却大量依赖这些特性,于是与系统无法保持兼容。
最近看到了微软发布PHP原生的SQL Server驱动v1.1,里面看到对UTF-8编码和一些关键特性的支持,我知道是时候把MS SQL驱动换成微软PHP原生的SQL Server驱动了。
但是ADODB内对于PHP原生的SQL Server驱动支持似乎只是v1.0,没有把v1.1中的特性包含在其中,于是我只能自己动手,丰衣足食了。其中主要改变如下:
1. 在sqlsrv_connect加入charset参数,强制连接使用UTF-8编码。
2. 在sqlsrv_query中加入了Scrollable选项,强制使用SQLSRV_CURSOR_KEYSET类型结果集(支持num_rows函数和随机访问)。
3. 重写Move函数支持随机访问结果集。
4. 。。。
我将修改的文件上传上来,如果你要使用,可以将php文件放到ADODB目录下的drivers目录下即可。
分享到:
相关推荐
博图WinCC V16用ADODB、DataGrid控件VB脚本显示SQL Server数据
自动化 wincc连接sql server数据库脚本,不需要wincc授权,直连sql server数据库。解决归档导出问题
ADODB数据驱动操作支持库
SQL Server 数据库管理常用的SQL和T-SQL语句 SQL SERVER 与ACCESS、EXCEL的数据转换 sql server中,日期比较、日期查询的常用语句 SQLSERVER 索引 填充因子 Server 中一个非常强大的日期格式化函数 根据表中数据...
封装连接数据库及常用增删改查等操作的动态库源码,简单,方便的在程序中使用SQLServer数据库。
vb ADO方式,连接SQLSERVER数据库。
利用ADODB实现SQLSERVER数据库访问 (1).pdf
ADODB目前支援MySQL, Oracle, Microsoft SQL Server, Sybase, Sybase SQL Anywhere, Informix, PostgreSQL, FrontBase, Interbase (Firebird 及 Borland 版本), Foxpro, Access, ADO 和 ODBC。ADODB也有透过ODBC成功...
s = "Driver={SQL Server}; Database=phone; UID=sa; PWD=oallserver; Server=10.47.1.12 " conn.ConnectionString = s conn.Open txtsql = "select * from tellphone where phone_id ='" & telephone & "'" ...
ADODB 是一个强大的 PHP 类库,提供了完整的方法和属性,可以用来控制数据库系统,更棒的是你只要记得它的功能即可,因为不同的数据库系统,只要修改一个属性值,ADODB 就会自动依据设定取用正确的PHP 函数。...
为了使关于数据库操作的部分能够用代码更好的控制,此系统没有使用Delphi自带的数据库组件和第三方控件,而直接引用了ado2.8类型库生成ADODB_TLB.pas对数据库进行控制,我把这叫做“原生ADO”,呵呵。 同时,此系统...
s = "Driver={SQL Server}; Database=trsip; UID=sa; PWD=oallserver; Server=10.47.1.12 " conn.ConnectionString = s conn.Open txtsql = "select top 1 * from book" Set rs = New ADODB.Recordset rs.Open...
其中的ADODB.Connection中的连接字符串怎么写
PHP的adodb5类库
php adodb文件包配合之前发的php adodb文档使用的
目前 ADODB最新版本是V4.62,支持的数据库种类非常地多,例如:MySQL, PostgreSQL, Interbase, Informix, Oracle, MS SQL 7, Foxpro, Access, ADO, Sybase, DB2 以及一般的 ODBC (其中 PostgreSQL、Informix、Sybase...
adodb php连接数据库的一种介质 adodb php连接数据库的一种介质
PHP adodb5 数据库操作类 PHP adodb5 数据库操作类 PHP adodb5 数据库操作类
数据库SQLServer,测试程序显示出错信息:”ADODB.Recordset 错误 “800a0e78” 对象关闭时,不允许操作” 独立测试数据库链接,显示出错信息:用户 “sa” 登录失败。原因: 未与信任 SQL Server 连接相关联。 这一...
ADODB 是一种兼容的各类数据库应用程序接口(API),支持的数据库种类非常地多, 例如:MySQL, PostgreSQL, Interbase, Informix, Oracle, MS SQL 7, Foxpro, Access, ADO, Sybase, DB2 以及一般的 ODBC 特点: 1、...