php连接mssql数据库


有两个方法:odbc 或者mssql 连接
配置的时候,最好先确认php网页调试时,能输出错误提示。
打开php.ini ,确认display_errors=On  。这样,通过网页打开测试页面时,有错误提示,心里有底,知道该怎么调整代码。


odbc 最大的好处就是不需要改什么文件,拷贝其他文件之类的。 需要在系统dsn里配置一个sql的odbc连接。 
首先打开odbc连接窗口进行设置。
点击系统dsn,添加-sql server,通过创建到sql server的新数据源窗口设置连接的配置。这里需要注意的是,
第一步设置的名称,后面代码需要用到.
配置完成后,用测试页面进行测试。新建一个php页面,代码如下:
<?php
$ms_host = "phptosql05"; //这里是ODBC的连接名称
$ms_user = "sa"; //用户名
$ms_pass = "123456"; //密码
$ms_connect =odbc_connect($ms_host, $ms_user, $ms_pass) or die("Couldn't connect to SQL Server on MSSQL");
       if($ms_connect)
       {
       echo '恭喜,连接数据库成功!';
       };
?>
如果看到恭喜,连接数据库成功!,则已经连接上sql数据库了。


注:php默认打开odbc的。你可以通过phpinfo页面查看是否开启了这个功能。
<?php
 phpinfo(); 
?>


mssql 需要做一些设置
首先。打开php.ini ,保证mssql.secure_connection=Off  . 把extension=php_mssql.dll前的;去掉。
然后,打开下载ntwdblib.zip,把ntwdblib.dll文件php\php5文件目录(即php.ini的目录里)
接着,到php\php5\ext文件目录里,把php_mssql.dll和ntwdblib.dll拷贝到windows/system32里。
最后,重启apache。
注:你可以通过phpinfo页面查看是否开启了mssql这个功能。
<?php
 phpinfo(); 
?>


配置完成后,用测试页面进行测试。新建一个php页面,代码如下:
  <?php
    $conn=mssql_connect("192.168.0.101","sa","123456") or die('Something went wrong while connecting to MSSQL');


       //测试连接
       if($conn)
       {
       echo '连接数据库成功!';
       }
  ?>
如果看到连接数据库成功!,则已经连接上sql数据库了。


对于 2005 或者 2008 ,经过测试,可以使用sqlsrv来连接。要安装SQLSRV20和Microsoft SQL Server 2008 Native Client(http://www.downcc.com/soft/8474.html

sqlsrv的安装,百度有很多。

 

代码:

<?php
    $serverName = "172.18.200.21";
    $connectionInfo =  array("UID"=>"sa","PWD"=>"xxzx@2676627","Database"=>"ReportServer");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    $sql  =  "select * from Catalog" ;
    $stmt  =  sqlsrv_query (  $conn ,  $sql  );
    if(  $stmt  ===  false ) {
        die(  print_r (  sqlsrv_errors (),  true ) );
    }

    while(  $row  =  sqlsrv_fetch_array (  $stmt ,  SQLSRV_FETCH_ASSOC ) ) {
          echo  $row [ 'ItemID' ]. ", " . $row [ 'Type' ]. "<br />" ;
    }

    sqlsrv_free_stmt (  $stmt );
    sqlsrv_close( $conn);
?>

----------从mssql 2008 取出的数据中文乱码问题。

 

 

乱码原因
只要你使用的是php自带的那个mssql,那读出来的数据编码格式一定是gbk,这是因为mssql自身只有gbk的编码,且不能定义

解决方案
1使用mssql
可以在输出的时候,对输出的数据强制转换,只需要转换汉字,数字不需要转
while($row = mssql_fetch_row($result)){
    echo iconv('GB2312','UTF-8',$row[0]);
}

2使用最新的微软扩展sqlsrv driver for php
下载这个dll,放到php的ext文件夹中
修改php.ini打开这个扩展
在定义连接时,可以指定编码为utf-8

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值