php连接mssql php连接mssql2005数据库代码
|在研究ezSQL的时候就看到了mssql_connect()等一些php提供的连接MSSQL的函数,本以为php这个开源的风靡世界的编程语言对连接微软的数据应该是不在话下的,但是到真正执行的时候,才发现困难多多。
一开始我下载的php版本是5.93的,下载下来添加环境变量等等搞了半天后,phpinfo()这个函数终于成功的运行在浏览器中了。然后当我在满世界的找php_mssql.dll,才发现在5.3以及以上版本的php中已经不是原生态的支持mssql了。
好不容易找到了微软Microsoft Drivers 3.0 for PHP for SQL Server,心想微软的东西应该做的可以,却无奈的发现SQLSRV30.EXE没有办法运行:“SQLSRV30.EXE 不是有效的win32程序”。
在网上搜索了半天,总结了以下一些可行的办法,但是在这之前你需要:
配置MICROSOFT SQL SERVER
1、下载并安装sql server。现在这个版本就比较多了从2000 到2008不等,找一个你自己下载吧。
2、开放tcp/ip连接方式,使得数据库能够远程访问。SQL Server Configuration Manager -> Network Configuration -> Protocols -> TCP/IP enabled
3、打开数据管理界面,添加用户和数据库。
4、安装php和配置IIS服务。
5、打开php所在文件夹里面的 php.ini文件,并添加:
1
2
|
mssql.textlimit = 20971520 mssql.textsize = 20971520 |
做完了这些之后,你可以按照下面三种方法来连接数据库了:
使用php自带的方法连接MSSQL(5.3及以后版本不适用)
确保php ext扩展库文件夹下有php_mssql.dll,然后在PHP.ini中的配置中,将
;extension=php_mssql.dll
前面的“;”去掉。
然后你可以测试连接了:
首先是mssql_connect方式,这种方式比较方便,但是可能会遇到服务器没有安装mssql模块的情况。
$ms_host = "192.168.0.xx"; //主机
$ms_user = "sa"; //用户名
$ms_pass = "aa"; //密码
$ms_data = "test";
$ms_connect = mssql_connect($ms_host, $ms_user, $ms_pass)
or die("Couldn't connect to SQL Server on $$ms_host");
$ms_select = mssql_select_db($ms_data, $ms_connect)
or die("Couldn't open database $ms_select");
$update
$result = mssql_query($update);
return $result;
报错可能是:
(1) Call to undefined function mssql_connect() :这是因为没有开启mssql模块。
①在php.ini中找到:
extension=php_mssql.dll,和extension=php_pdo_mssql.dll,确定他们的前面没有“;”。
②在php.ini中找到:
extension_dir = "C:\php\ext\"。这里是extension目录,确认这个目录下有php_mssql.dll、php_pdo_mssql.dll。
③php.ini的位置,extension_dir的位置可以使用phpinfo()查看。
(2)mssql_connect() : Unable to connect to server: 192.168.0.xx:连接失败,最可能是的是没有开启mssql的远程连接。这里有具体的开启方法。
http://tech.ccidnet.com/art/1106/20090225/1689795_1.html
当然,我的情况是这样设置了以后还是不能连接,后来我注意到我的服务器上有一个运行的图标,而那台虽然开启了远程连接,而且用SQL Server Management Studio也可以正常连接的服务器则没有这个图标,也许是这个原因。具体是什么情况改天问一下mssql的专家们。
因为另一台服务器是iis的,没有安装php的mssql模块,所以我采用odbc的连接方式,代码如下:
$ms_host = "test"; //这里是ODBC的连接名称
$ms_user = "test"; //用户名
$ms_pass = "test123"; //密码
$ms_connect =odbc_connect($ms_host, $ms_user, $ms_pass) or die("Couldn't connect to SQL Server on MSSQL");
在那台服务器上建立一个odbc连接,具体操作是:
①打开控制面板-管理工具-数据源 (ODBC)-“系统DSN”的选项卡,点击“添加”,在“创建新数据源”中选择“SQL Native Client”。
②填入数据库基本资料,因为是本地数据库,所以填写(local)
几天一直都为php连接mssql的事而烦恼,因为试做很多种不同的方法都不行,原因一直都未明确。不过,今日
我的php终于可以连接到mssql了。所以我接下来,写写这几天我所得的经验。
1.首先,版本的问题。
2.开始配置php_mssql
3.连接mssql
这步是很多初学者刚用SQL server时忽略的一步,这步都是许多网上关于php连接mssql的文章中都是没有的.
注:用PHP操作MSSQL比在ASP连接MYSQL要简单,所以,当需要MSSQL与MYSQL并存时,用PHP连接MSSQL来操作MYSQL与MSSQL并存比较简单好用.如果是ASP连接MYSQL,需要安装一个MYSQL驱动,默认windows的ODBC没有安装,很遗憾...
1.在web服务器上至少安装了mssql的客户端
2.打开php.ini把;extension=php_mssql.dll前面的分号去掉
有必要话:需要制定extension_dir
3.推荐使用php<=4.0.9<=5.0.3目前我还没有连接成功过4.010和5.0.3
4.数据库的连接分页可以到phpe.net上获取到相应的class
下面是我根据那里修改的一个class
在研究ezSQL的时候就看到了mssql_connect()等一些php提供的连接MSSQL的函数,本以为php这个开源的风靡世界的编程语言对连接微软的数据应该是不在话下的,但是到真正执行的时候,才发现困难多多。
一开始我下载的php版本是5.93的,下载下来添加环境变量等等搞了半天后,phpinfo()这个函数终于成功的运行在浏览器中了。然后当我在满世界的找php_mssql.dll,才发现在5.3以及以上版本的php中已经不是原生态的支持mssql了。
好不容易找到了微软Microsoft Drivers 3.0 for PHP for SQL Server,心想微软的东西应该做的可以,却无奈的发现SQLSRV30.EXE没有办法运行:“SQLSRV30.EXE 不是有效的win32程序”。
在网上搜索了半天,总结了以下一些可行的办法,但是在这之前你需要:
配置MICROSOFT SQL SERVER
1、下载并安装sql server。现在这个版本就比较多了从2000 到2008不等,找一个你自己下载吧。
2、开放tcp/ip连接方式,使得数据库能够远程访问。SQL Server Configuration Manager -> Network Configuration -> Protocols -> TCP/IP enabled
3、打开数据管理界面,添加用户和数据库。
4、安装php和配置IIS服务。
5、打开php所在文件夹里面的 php.ini文件,并添加:
mssql.textlimit = 20971520
mssql.textsize = 20971520
做完了这些之后,你可以按照下面三种方法来连接数据库了:
使用php自带的方法连接MSSQL(5.3及以后版本不适用)
确保php ext扩展库文件夹下有php_mssql.dll,然后在PHP.ini中的配置中,将
;extension=php_mssql.dll
前面的“;”去掉。
然后你可以测试连接了:
1 |
//连接MSSQL |
2 |
$conn =mssql_connect( "实例名或者服务器IP" , "用户名" , "密码" ); |
3 |
4 |
//测试连接 |
5 |
if ( $conn ) |
6 |
{ |
7 |
echo "连接成功" ; |
8 |
} |
Microsoft Drivers for SQL Server for PHP
2008年7月微软发布了一个新的为php连接SQL Server的驱动,它改善了php自带的连接MSSQL函数的一些缺点,并且是以php扩展插件的形式开发的,通过它你可以用php轻松的读写微软的数据库了。
如果你服务器使用的是IIS的话,那么就一定要从这里去下载:
http://php.iis.net/
因为从上述链接进去其实是微软整合的网络开发平台,只提供在线安装,但是很方便的整合了PDO插件和php,当然还有微软的其它一些开发功能,但是如果你没需要,你可以不装了,那些是在visual studio中的。
但是如果你用的是 Apache的话,你可以去这里直接下载这个插件了,它其实是一个解压文件,解压出来几个DLL文件,具体操作如下:
1)下载驱动包:http://www.microsoft.com/en-us/download/details.aspx?id=20098.
2)将DLL文件解压到 PHP extension_dir 目录,如果出现说SQLSRV30.EXE 不是有效的win32程序,可能是缺少某些库,可能是vc10,也有可能是没有用administrator权限运行。
extension_dir = “C:/PHP/ext”
3)在php.ini配置文件内引用相应的动态链接库文件
extension=php_sqlsrv_52_ts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll
extension=php_pdo.dll
其中的52、53表示就是php的5.2.x和5.3.x 版本,选择跟你php版本相匹配的;
选择vc6或vc9的主要看你使用的是什么web服务器软件,如果使用的是IIS那就选择vc9的,如果是Apache则选择vc6的。
至于ts和nts,就要看你安装的php版本是线程安全版的还是非线程安全版,ts是线程安全,nts是非线程安全。
0 Comments.