今天应公司的要求,要从旧官网的数据导入到新官网里进行整合,当时旧官网就采用.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
下载Microsoft Drivers for PHP for SQL Server 扩展包 它分为2.0和3.0版本,具体的安装方法可以参考微软提供的方法,这里可以直接安装在php的扩展目录extension_dir 指定的目录(E:\wamp\bin\php\php5.3.3\ext)。(本人使用的是2.0版本)
安装完成目录下会多出很多个ddl的扩展文件
打开php.ini文件,在extension=php_mysql.dll 下面一行添加下面的扩展,然后重启Apache 就可以了(可以查看phpinfo检查是否有sqlsrv扩展记录)
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的方法都已经弄出来了,