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 ,经过测试,使用mssql也能连接,但是。也可以到微软官网,下载php的驱动,然后使用sqlsrv功能,但是,这里需要注意的是,使用sqlsrv需要看php版本和操作系统,这里不再介绍。附一个测试连接,并输出查询结果的的php页面代码。


<?php
$server = '192.168.0.101';
// Connect to MSSQL
$conn = mssql_connect($server, 'sa', '123456') or die('Something went wrong while connecting to MSSQL');
if (!$conn) {
    die('Something went wrong while connecting to MSSQL');
}
else {echo '连接数据库成功';};
mssql_select_db('master');
$query="select top 6 * from spt_values";
$result=mssql_query($query);
$numrow=mssql_num_rows($result);
for($i=0;$i<$numrow;$i++)
{
  $row=mssql_fetch_array($result);
  echo("<br />"); 
  echo($row[1]);
  echo("<br />"); 
}
mssql_free_result($result);
mssql_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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章