php连接微软MSSQL(sql server)完全攻略
作者:吵吵 发布时间:2023-07-16 17:56:43
在研究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
前面的“;”去掉。
然后你可以测试连接了:
//连接MSSQL
$conn=mssql_connect("实例名或者服务器IP","用户名","密码");
//测试连接
if($conn)
{
echo "连接成功";
}
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是非线程安全。
4)重启Apache
5)连接数据库
测试连接代码:
<?php
//本地测试的服务名
"(local)";
//使用sql server身份验证,参数使用数组的形式,一次是用户名,密码,数据库名
//如果你使用的是windows身份验证,那么可以去掉用户名和密码
$connectionInfo = array( "UID"=>"root",
"PWD"=>"root2010",
"Database"=>"master");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn )
{
echo "Connection established.\n";
}
else
{
echo "Connection could not be established.\n";
die( print_r( sqlsrv_errors(), true));
}
?>
在windows下使用FreeTDS
什么是FreeTDS? FreeTDS其实就是一个开源(或者可以说成自由)的C程序库,它可以实现在Linux系统下访问操作微软的SQL数据库。可以用在Sybase的db-lib或者ct-lib库,在里面也包含了一个ODBC的库。允许许多应用软件连接到Sybase或者微软的SQL服务器。FreeTDS是以源码的现实发布的,正因为是这样,所以它几乎可以在任何系统中进行编译安装。
如如你的服务器是Windows系统, 那么你应该使用 php_dblib.dll。(more information on Using FreeTDS for Unix.)
通常我们可以在这个网站上找到这些DLL文件- Frank Kromann's site, 但是它基本上很多都已经过时了,并且会引发很多的问题,因此我们推荐windows下使用PHP 5.2.x版本,并且看看下面的建议 :
1. 按照下面的表格来下载 php_dblib.dll 并且将其保存到 /PHP/ext 文件夹下面.
PHP version | Thread Safe | FreeTDS version | Download URL |
---|---|---|---|
PHP 5.2.x (vc6) | Yes | 0.82 + 20090302 patches | Download! |
No | 0.82 + 20090302 patches | Download! | |
PHP 5.3.x (vc9) | Yes | 0.82 + 20090904 patches | Download! |
No | 0.82 + 20090904 patches | Download! | |
PHP 5.4.x (vc9) | Yes | 0.82 + 20110906 patches | Download! FTP Download! |
No | 0.82 + 20110906 patches | Download! FTP Download! |
2、 FreeTDS 需要安装 .NET Framework v1.1 ,你可以到微软的网站去下载。或者你去Frank's site 下载需要的DLL文件,并保存到你的/PHP根目录下面。
3、在php配置文件 /PHP/php.ini 中添加:
extension=php_dblib.dll
4、当php引擎启动FreeTDS模块的时候需要传递一些信息,使得FreeTDS能够连接到它的默认的数据库。因此它的需要在freetds.conf中定义数据库连接的基本信息,该文件在其根目录下,可以按照你的情况来进行修改:
[global]
host = xxx.xxx.xxx.xxx (host name or ip of the MSSQL server)
port = 1433
client charset = UTF-8
tds version = 8.0
text size = 20971520
5、创建config.php文档来定义数据库连接参数:
$CFG->dbtype = 'mssql'; // Required
$CFG->dbhost = 'localhost'; // assuming MS SQL is on the same server, otherwise use an IP
$CFG->dbname = 'moodle'; // or whatever you called the database you created
$CFG->dbuser = 'yourusername'; // I usually use the 'sa' account (dbowner perms are enough)
$CFG->dbpass = 'yourpassword';
$CFG->dbpersist = false;
$CFG->prefix = 'mdl_'; //Prefix, you can change it, but NEVER leave it blank.
6、 重启你的网站,如果还是没有连接到你的数据库的话,在 /PHP/php.ini文件中将display_startup_errors改为"On",当你解决了这些问题之后再将错误报告改为“Off”;
7、测试你的网站,建立test.php文件,代码如下,访问http://localhost/test.php进行测试
<?php
$link = mssql_connect('localhost', 'db_user', 'db_password');
if(!$link) {
echo'Could not connect';
die('Could not connect: ' . mssql_error());
}
echo'Successful connection';
mssql_close($link);
?>
好了windows下使用FreeTDS网上的资料一大堆就不再讲了,至此,此篇日志结束。


猜你喜欢
- 1、下载pycharmpycharm是一种Python IDE,能够帮助我们在编写代码时提高效率。网上提供的有专业版和教育版之分。专业版是收
- 如何导入数据库 可以从限制文件中导入SQL共享服务器数据库。如果想把存放在其他地方的数据导入,需要先把其内容拷到限制文件中。(注:在导入数据
- 0、前言评判一个算法的好坏的标准:时间复杂度空间复杂度1、归并排序算法是什么?冒泡排序(Bubble Sort)是一种建立在归并操作上面的一
- Python安装过程,供大家参考,具体内容如下1.下载安装程序我们安装Python的一个重要目的是为了用IAR编译CC2640 OAD文件时
- 根据用户的权限,展示不同的菜单页。知识点路由守卫(使用了前置守卫):根据用户角色判断要添加的路由vuex:保存动态添加的路由难点每次路由发生
- 1. 表单框类型<!DOCTYPE html><html lang="en"><head&
- xlsxwriter可能用过的人并不是很多,不过使用后就会感觉,他的功能让你叹服,除了可以按要求生成你所需要的excel外还可以加上很形象的
- 本文是对pandas官方网站上《10Minutes to pandas》的一个简单的翻译,原文在这里。这篇文章是对pandas的一个简单的介
- 我们都知道用聚合函数count()可以统计表的行数。如果需要统计数据库每个表各自的行数(DBA可能有这种需求),用count()函数就必须为
- 本文主要介绍了IDEA配置连接MYSQL数据库遇到Failed这个问题解决,分享给大家,具体如下: &nb
- 介绍在使用matplotlib的过程中,发现不能像matlab一样同时开几个窗口进行比较,于是查询得知了交互模式,但是放在脚本里运行的适合却
- 变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存
- 1 简介kepler.gl作为开源地理空间数据可视化神器,也一直处于活跃的迭代开发状态下。而在前不久,kepler.gl正式发布了其2.4.
- 一.python读取txt文件最简单的open函数:# -*- coding: utf-8 -*-with open("test.
- 前言做网络爬虫的同学肯定见过各种各样的验证码,比较高级的有滑动、点选等样式,看起来好像挺复杂的,但实际上它们的核心原理还是还是很清晰的,本文
- 一、检测网络信息和系统信息 在Frontpage 2000 的Explorer管理器中选择帮助(Help)|关于Frontpage管理器(A
- 引言众所周知,在python中我们用try…except…来捕获异常,使用raise来抛出异常,
- 有人问为什么要去扫描网站目录:懂的人自然懂这个Python脚本的特点:1.基本完善2.界面美观(只是画了个图案)3.可选参数增加了线程数4.
- 本文实例为大家分享了js实现酷炫倒计时动画的具体代码,供大家参考,具体内容如下前段时间和朋友去音乐餐厅吃饭,中间有个活动,然后看到他们软件公
- 1、pd.cut函数有7个参数,主要用于对数据从最大值到最小值进行等距划分 pandas.cut(x, bins,&nb