php连接sql server真是一件闹心的事,

折腾了许久,今天有了点起色,还是不错的。

mssql extension is not available anymore on Windows with PHP 5.3 or later.

也就是说extension=php_mssql.dll是没有效果的,不管用了。php不支持用php_mssql.dll连接sql server了,

这个时候怎么办呢?

微软官方有dll支持,

各种上网查询,听说用SQLSRV20.EXE管用,

1.下载SQLSRV20.EXE

第一个SQLSRV20.EXE是用于sql server 2005或者sql server2008的。

第二个SQLSRV30.EXE是用于sql server 20010或者sql server 2012的。

2.解压SQLSRV20.EXE后,又是一个面临选择的问题,

如下图,

这里面有很多,到底选择哪个呢?

SQLSRV20.exe,即MicrosoftDriver 2.0 for PHP for SQL Server(sql server 2005 及2008使用SQLSRV20.exe, SQL Server 2010使用SQLSRV30.exe)(需要其中的php_pdo_sqlsrv_52_ts_vc6.dll和php_sqlsrv_52_ts_vc6.dll);其中,52表示 php5.2,53表示php5.3,ts表示线程安全,nts表示非线程安全,vc6表示用vc6(vs2005)编译的,vc9表示用vs2008编译的,vc6适用于apache,vc9适用于IIS。

经过筛选之后,

3.选择了php_sqlsrv_53_ts_vc6.dll

和php_pdo_sqlsrv_53_ts_vc6.dll

将其

4.放入php文件夹下的ext中

5.并且配置php.ini

添加

extension=php_pdo_sqlsrv_53_ts_vc6.dll
extension=php_sqlsrv_53_ts_vc6.dll

6.重启apache

发现报错了,

非常郁闷,说好的vc6的呢?!!!

这个时候,我尝试了vc9,替换了vc6

然后重启apache可以了。说好的vc9用于IIS的呢?

也许是适合用于IIS,但是同样可以用于apache吧!

这个时候通过

7.查看phpinfo发现已经有了sqlsrv的支持

然后进行代码连接测试,

8.首先要确保sql server2008正常,

我设置了sa用户的密码为123456,

sql server2008是正常的,

好,

9.测试!

<?php
$serverName = "纪庆";
$connectionOptions = array("UID"=>"sa","PWD"=>"123456","Database"=>"master");
$conn = sqlsrv_connect( $serverName, $connectionOptions);
if( $conn === false ){
die('不能打开连接');
}
$tsql = "SELECT TOP 3 * FROM spt_values";//注意,这里是mssql,不能用limit
$result = sqlsrv_query($conn, $tsql, $params);
if ( $result === false){
print_r(sqlsrv_errors());exit;
}
if(sqlsrv_has_rows($result))
{
$rowCount = sqlsrv_num_rows($result);
while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC))
{
echo iconv("gb2312", "utf-8", $row['name'])."<br>";//连接的mssql数据库肯定是中文的,需要转码
}
}
else
{
echo '没有数据';
}

服务器名称:纪庆

用户名:sa

密码:123456

数据库:master

表:spt_values

查询结果如下:

rpc
pub
sub

至此,算是成功了吧!

继续测试其他主机也是可以的,

$serverName="192.168.70.119";

这里的服务器名称改为了另一台机器的ip,

对应的用户名sa

密码123456

数据库master

表spt_values都是一样的

只是数据我修改了,将第一条修改为jiqing

测试结果:

jiqing
pub
sub

发现也是成功的!

10.测试pdo_sqlsrv

<?php
try {
$conn = new PDO( "sqlsrv:Server=192.168.70.119;Database=master",'sa', '');
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
} catch( PDOException $e ) {
die( "Error connecting to SQL Server".$e->getMessage() );
} echo "Connected to SQL Server<br/>"; $query = 'select top 3 * from spt_values';
$stmt = $conn->query( $query );
while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){
print_r( $row );
}
?>

结果:

Connected to SQL Server
Array ( [name] => jiqing [number] => [type] => A [low] => [high] => [status] => ) Array ( [name] => pub [number] => [type] => A [low] => [high] => [status] => ) Array ( [name] => sub [number] => [type] => A [low] => [high] => [status] => )

也是可以的。

Windows下连接php5.3+sql server2008的更多相关文章

  1. java 连接mysql 和sql server2008代码

    这两天用java分别连接mysql和sql server2008代码.刚開始都是有错.如今找到了在 自己机器上成功连接的代码: 1. mysql Class.forName("com.mys ...

  2. 分享一次在Windows Server2012 R2中安装SQL Server2008

    入手一台Windows Server2012云服务器,搭建一下服务环境,选用SQL Server2008 直奔主题,下好安装镜像后,直接双击 选择运行程序而不获取帮助 如图: 进入安装中心后选择 安装 ...

  3. Windows下连接调试Asus Nexus 7 Tablet

    Linux和mac下都能够直接连接,可是windows下必须下驱动.官网上的driver无论用.管用的是 https://drive.google.com/uc?id=0Bw8B2a85Qa1jSld ...

  4. windows下安装php5.2.*,php5.3.*,php5.4.*版本的memcache扩展

    注:如使用集成环境成功率低,请自行配置php apache,表示win7下wamp php5.4.3基础上配置拓展,成功率极低.费时. 拓展安装调试方法: 编写调试php文件 <?php  me ...

  5. python在windows下连接mysql数据库

    一,安装MySQL-python python 连接mysql数据库需要 Python interface to Mysql包,包名为 MySQL-python ,PyPI上现在到了1.2.5版本.M ...

  6. 在Windows下为PHP5.6安装redis扩展

    Redis 安装 Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases. Redis 支持 32 位和 64 位.这个需要根据你系统 ...

  7. windows下安装php5.5的redis扩展

    windows下开发用的xampp集成的环境,想装个php-redis扩展,扩展的github地址:  https://github.com/nicolasff/phpredis php_redis. ...

  8. windows下安装php5.2.*,php5.3.*,php5.4.*版本的memcache扩展(转)

    拓展安装调试方法: 编写调试php文件 <?php  memcache();  通过命令行执行测试,因为php拓展安装成功与否与apache无关,所以没必要不断重启apache去看phpinfo ...

  9. [转载]在Windows下为PHP5.6安装redis扩展和memcached扩展

    一.php安装redis扩展   1.使用phpinfo()函数查看PHP的版本信息,这会决定扩展文件版本       2.根据PHP版本号,编译器版本号和CPU架构, 选择php_redis-2.2 ...

随机推荐

  1. bzoj4005[JLOI2015]骗我呢

    http://www.lydsy.com/JudgeOnline/problem.php?id=4005 神题~远距离orz 膜拜PoPoQQQ大神 #include<cstdio> #i ...

  2. jar包版本冲突,并且要保留两个版本都能使用

    问题:在做项目时,遇到jar版本冲突的问题,并且老代码依赖不能用新jar包代替,要保证功能不变须要保证两个jar都能使用 思路:使用runtime 的exec 方式另启线程运行,然后返回结果 解决: ...

  3. 关于js对象引用的小例子

    看完下面的代码,相信对js对象引用又有了新的认识,直接上代码: // split()把字符串分割成字符串数组 // reverse() 会改变数组本身,**并返回原数组的引用**.!!!! var a ...

  4. StoryBoard 加入一个自定义View

    1. 建一个 UIView的子类(MyView.h/MyView.m) 2. 建一个 View类型的XIB 3. 把xib的file‘s owner设为MyView 4. 在.h文件里加上 @prop ...

  5. JavaScript 判断一个字符串是否在另一个字符串中

    传统上,JavaScript只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中.ES6又提供了三种新方法. includes():返回布尔值,表示是否找到了参数字符串. start ...

  6. Linux多任务编程——线程

    线程基础 △ 由于进程的地址空间是私有的,因此在进行上下文切换时,系统开销比较大 △ 在同一个进程中创建的线程共享该进程的地址空间 △ 通常线程值得是共享相同地址空间的多个任务 △ 每个线程的私有这些 ...

  7. C# winform带进度条的图片下载

    代码如下: public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } private void ...

  8. VCS仿真生成vpd文件(verilog)

    VCS仿真生成vpd文件(verilog) 一.环境与文件 Linux平台  csh环境 VCS 64bit 代码文件请参考<一个简单的Verilog计数器模型> 二.开始仿真 1.com ...

  9. 给linux设置grub密码

    一.明文加密:vim /etc/grub.conf在hiddemenu下面新增一行,输入:password 密文然后:wq保存退出 在开机出现退数菜单的时候,按任意键,就会出现启动选择菜单,这时下面的 ...

  10. vim的用法

    1. vi 与 vim 有什么区别呢,它们之间有什么关系?Vim是从Vi发展出来的一个文本编辑器,可以看作是vi的升级版.Vim的主要功能与原始的Vi完全兼容,vi不会显示颜色,而vim会根据文件内容 ...