php5.2连接mssql2005,php5.3连接mssql2005数据库不完美解决方案

本文讲述了PHP5.3版本弃用ISAPI并采用FastCGI后,如何通过微软提供的SQLSRV驱动连接MSSQL数据库遇到的问题。作者在尝试使用该驱动时发现,SQL语句的大小写敏感性和可能导致FastCGI崩溃的bug,给开发带来了困扰。建议开发者在遇到类似问题时考虑使用MySQL作为替代方案。
摘要由CSDN通过智能技术生成

说是说不完美,其实也是可以用的

php5.3已经采用了fastCGI方式,抛弃了isapi方式,与IIS连接

而数据库方面,也没有了5.2版本中mssql.dll

那么,想要使用微软的mssql数据库怎么办呢?

微软开发了一款驱动,专门用来提供php与mssql进行连接使用

但是,不是很好用,后面大家就会知道了...

首先请下载安装

SQLSRV20.EXE 和 sqlncli.msi

SQLSRV20.EXE是个打包程序,解压出来后里面有两个dll文件复制到php安装目录下的ext目录里面,然后在php.ini文件中添加:

extension=php_sqlsrv_53_ts_vc9.dll

extension=php_pdo_sqlsrv_53_ts_vc9.dll

因为我是5.3.6安全线程版本的,因此是以上两个文件,大家要根据自己的php版本来选择文件.

sqlncli.msi是客户端连接驱动,务必安装

重启IIS即可开始使用啦(郁闷也开始到来了)

郁闷1:

有时候,需要注意大小写

sql语句有时候需要注意字段名称的大小写,默认情况下,哈哈,很多时候大家都会被郁闷到

郁闷2:

sql语句有时候无法执行,会引起FastCGI崩溃!

这不是耸人听闻,是实际发生的,如下:

我用pdo方式连接数据库,sql语句如下:

$query = 'SELECT * FROM EPOA_Menu WHERE pid = 1';

这样没有问题,但是我把sql语句一改:

$query = 'SELECT [menu] FROM EPOA_Menu WHERE pid = 1';

浏览器页面报如下错误:

FastCGI Error

The FastCGI Handler was unable to process the request.

--------------------------------------------------------------------------------

Error Details:

The FastCGI process exited unexpectedly

Error Number: -1073741819 (0xc0000005).

Error Description: Unknown Error

HTTP Error 500 - Server Error.

Internet Information Services (IIS)

并且弹出错误提示框:windows应用程序错误 ... 内存不能为read

0818b9ca8b590ca3270a3433284dd417.png

哈哈,超郁闷,也许是我还没有发现它的问题所在吧.

总结:

也许问题就出在驱动上,因为是微软开发的,微软对开源的东西,总是会'搞'你一下,我才疏学浅,这样理解,也许有失偏颇,所以我的建议是--使用mysql!!!

附上我的代码:

/*****************************************************

程序名称:生成JSON数据

程序说明:为测试ext获取json编写,从mssql数据库中获取数据

编写时间:2011年4月23日

编写人员:童童

修改时间:2011年4月23日

修改人员:童童

备 注:获取菜单数据

****************************************************/

$database = "EPOA";

$uid = "sa";

$pwd = "sa";

$conn = new PDO( "sqlsrv:server=(local) ; Database = $database", $uid, $pwd);

$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$conn->setAttribute( PDO::SQLSRV_ATTR_QUERY_TIMEOUT, 1 );

//这里的 * 如果替换成menu(我表中字段名称就是menu),那么就挂了

$query = 'SELECT * FROM EPOA_Menu WHERE pid = 1';

// simple query

$stmt = $conn->query( $query );

while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){

print_r( $row['menu'] ."
" );

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值