说是说不完美,其实也是可以用的
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
哈哈,超郁闷,也许是我还没有发现它的问题所在吧.
总结:
也许问题就出在驱动上,因为是微软开发的,微软对开源的东西,总是会'搞'你一下,我才疏学浅,这样理解,也许有失偏颇,所以我的建议是--使用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'] ."
" );
}