php 在win下连接sql server数据库的方法(实践过)

今天应公司的要求,要从旧官网的数据导入到新官网里进行整合,当时旧官网就采用.net开发的,用的是.net+sql server 2005 进行开发的,而我们新官网则采用的是php+mysql 开发的,这个必然要连接sql server 2005的数据进行数据转移。幸好的是php是可以连接sql server 2005。

第一种方法:确认php的版本,在php版本小于5.3的时候可以直接开启mssql.dll 扩展就可以了。


php配置系统:

 a.打开php.in将extension=php_mssql.dll的注释符号去掉。  

extension=php_mssql.dll

 b、打开php.in将mssql.secure_connection = Off改为on。

mssql.secure_connection = on

 c、将php_mssql.dll拷贝到php.in中extension_dir 指定的目录或者系统system32目录下。(php_mssql.dll在php的压缩安装包中有,如果已经有就忽略这一条)。

 d、最后重启php 就可以。 可以查看phpinfo里是否有mssql的扩展

Sql Server 2005配置系统:

 a. 运行 SQL Server 配置管理器:SQL Server Configuration Manager,打开协议 Protocols 
 b. 允许命名管道 "named pipes" 和 "tcp/ip" 
 c. 右键点击 "tcp/ip",打开属性 Properties 标签 "IP addresses" 
 d. 在 TCP 动态端口 "TCP Dynamic Ports" 填入 1433 
 e. 重启 SQL Server


连接SQL Server 2005: 

 

<?php

//链接数据库 
 $conn=mssql_connect('localhost','sa','123456'); 
  mssql_select_db('ugee',$conn); 
//query语句   
 $Query="select * from article"; 
 $Result=mssql_query($Query); 
//输出结果 
 $Num=mssql_num_rows($Result); 
 for($i=0;$i<$Num;$i++) 
   { 
     $Row=mssql_fetch_array($Result); 
     echo($Row[1]); 
     echo("<br />"); 
   }   
   
?>


第二种方法: 当php版本大于5.3的时候,由于5.3以上的版本php 不支持mssq了,这时就需要采用微软使用的是Microsoft Drivers for PHP for SQL Server的扩展包做连接

下载地址:https://download.microsoft.com/download/C/D/B/CDB0A3BB-600E-42ED-8D5E-E4630C905371/SQLSRV20.EXE

  1. 下载Microsoft Drivers for PHP for SQL Server 扩展包  它分为2.0和3.0版本,具体的安装方法可以参考微软提供的方法,这里可以直接安装在php的扩展目录extension_dir 指定的目录(E:\wamp\bin\php\php5.3.3\ext)。(本人使用的是2.0版本)

  2. 安装完成目录下会多出很多个ddl的扩展文件

  3. 打开php.ini文件,在extension=php_mysql.dll 下面一行添加下面的扩展,然后重启Apache 就可以了(可以查看phpinfo检查是否有sqlsrv扩展记录)


  4. extension=php_pdo_sqlsrv_52_nts_vc6.dll
    extension=php_pdo_sqlsrv_52_ts_vc6.dll
    extension=php_pdo_sqlsrv_53_nts_vc6.dll
    extension=php_pdo_sqlsrv_53_nts_vc9.dll
    extension=php_pdo_sqlsrv_53_ts_vc6.dll
    extension=php_pdo_sqlsrv_53_ts_vc9.dll
    
    extension=php_sqlsrv_52_nts_vc6.dll
    extension=php_sqlsrv_52_ts_vc6.dll
    extension=php_sqlsrv_53_nts_vc6.dll
    extension=php_sqlsrv_53_nts_vc9.dll
    extension=php_sqlsrv_53_ts_vc6.dll
    extension=php_sqlsrv_53_ts_vc9.dll

测试的代码:

  

/**
	 * 
	 *创建数据库连接
	 */
	public function link() {
		$serverName = "*.*.*.*"; //数据库服务器地址
		$uid = "sa"; //数据库用户名
		$pwd = "u7525525e1"; //数据库密码
		$connectionInfo = array ("UID" => $uid, "PWD" => $pwd, "Database" => "UGEE" );
		$conn = sqlsrv_connect ( $serverName, $connectionInfo );
		if ($conn == false) {
			echo "连接失败!";
			die ( print_r ( sqlsrv_errors (), true ) );
			exit();
		}
		return $conn;
	}	
	
        /**
	 * 
	 * 判断序列号是否存在
	 * @param unknown_type $seriaNum
	 */
	public function isExistNumber($eriaNum,$link){
		$field=" m.Id,m.ProvinceId,m.CityId,m.RegisterTime,i.RealName,i.Tel,i.Address ";
		$sql="select ".$field." from Member as m left join MemberInfo as i on m.Id=i.userId where m.SerialNum='".$eriaNum."'";
		$query = sqlsrv_query ( $link, $sql );    //RegisterTime 属于验证时间
		$row_info=array();
		if ($query) { //当存在的时候获取信息
			while ( $row = sqlsrv_fetch_array ( $query ) ) {
				$row_info['Id']=iconv('GBK', 'UTF-8', $row['Id']);
				$RegisterTime=$this->convertDate($row['RegisterTime']);
				$row_info['RegisterTime']=$RegisterTime['date'];
				$row_info['RealName']=iconv('GBK', 'UTF-8', $row['RealName']);
				$row_info['Tel']=iconv('GBK', 'UTF-8', $row['Tel']);
				$row_info['Address']=iconv('GBK', 'UTF-8', $row['Address']);
				break;
			}
			if ($row_info){
				return $row_info;
			}else{
				$is_old=1;
			}
		}else{
			$is_old=1;
		}
		if ($is_old){
			$sql="select SerialNum,Address,RealName,Gender,Tel,Email,QQ from OldUser where SerialNum ='".$eriaNum."'";
			$query = sqlsrv_query ( $link, $sql );
			if ($query){
				while ( $row = sqlsrv_fetch_array ( $query ) ) {
					$row_info['Address']=iconv('GBK', 'UTF-8', $row['Address']);
					$row_info['RealName']=iconv('GBK', 'UTF-8', $row['RealName']);
					$row_info['Gender']=iconv('GBK', 'UTF-8', $row['Gender']);
					$row_info['Tel']=iconv('GBK', 'UTF-8', $row['Tel']);
					$row_info['Email']=iconv('GBK', 'UTF-8', $row['Email']);
					$row_info['QQ']=iconv('GBK', 'UTF-8', $row['QQ']);
					break;
				}
				return $row_info;
			}else{
				return $row_info;
			}
		}
	}

到此php 链接sql sever 2005的方法都已经弄出来了,

本文永久地址:http://www.huanghaiping.com/article/45.html
本文出自 黄海平博客 ,转载时请注明出处及相应链接。

发表我的评论
  

网友最新评论 (0)

暂无评论
返回顶部