今天应公司的要求,要从旧官网的数据导入到新官网里进行整合,当时旧官网就采用.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的方法都已经弄出来了,