当前位置:论坛首页 > Linux面板 > 讨论

使用宝塔面板,linux使用freetds 连接连远程sql2012

发表在 Linux面板2018-3-26 13:03 [复制链接] 3 5976

linux使用freetds 连接连远程服务器sqlservser2012 2008(亲身安装)
linux版本:64位CentOS 7.4
Nginx版本:Apache2.4
php版本:php5.6.34
Sqlserver版本:2008
FreeTDS版本:0.95


本人不太懂linux 所以使用宝塔 linux面板,但是有需求需要用php连接sql2008数据库,所以在网上查资料知道可以用FreeTDS连接


网上其他类似文章我大都看了,其实有的是因为太久远不适用,有的有错误,还有的有几个关键问题没有说清楚,说真的踩坑真的很累,废话不多说


  1. 1.首先需要编译安装FreeTDS

  2. 说明:一定要从官网下载最新的版本FreeTDS-0.95 [url]ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz[/url]

  3. 如果官网实在太慢建议从本人上传的这里一样很快下载:[url]http://download.csdn.net/detail/21aspnet/9000357[/url]

  4. 请复制#号后面内容

  5. # wget [url]ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz[/url]
  6. # tar -zxvf freetds-patched.tar.gz
  7. # cd freetds-0.95
复制代码
如果你只需要上述2种扩展之一,自然只要新增其中一个的.so扩展到php.ini即可。
(4).重启PHP
如果没有正确生成扩展是不能重启php-fpm的。
这时候在phpinfo里就可以看到扩展添加成功的信息了。

  1. <b>4.使用PHP调用SQLserver</b>

  2. (1).mssql_connect配置版

  3. [php] view plaincopy

  4. <?php  

  5. header("Content-type: text/html; charset=utf-8");  

  6. $msdb=mssql_connect("egServer70","blog.csdn.net.unix21","password");  

  7. if (!$msdb) {  

  8.     echo "connect sqlserver error";  

  9.     exit;  

  10.     }  

  11. mssql_select_db("数据库名",$msdb);  

  12. $result = mssql_query("SELECT top 5 * FROM tablename", $msdb);  

  13. while($row = mssql_fetch_array($result)) {  

  14. print_r($row);  

  15. }  

  16. mssql_free_result($result);  

  17. ?>  

  18. 注意:上面的egServer70就是前面freetds/etc/freetds.conf配置的。



  19. (2).mssql_connect非配置版

  20. [php] view plaincopy

  21. <?php  

  22. header("Content-type: text/html; charset=utf-8");  

  23. //$msdb=mssql_connect("数据库IP","blog.csdn.net.unix21","password");  

  24. //$msdb=mssql_connect("数据库IP:1433","blog.csdn.net.unix21","password");  

  25. $msdb=mssql_connect("数据库IP:49151","blog.csdn.net.unix21","password");  

  26. if (!$msdb) {  

  27.     echo "connect sqlserver error";  

  28.     exit;  

  29.     }  

  30. mssql_select_db("数据库名",$msdb);  

  31. $result = mssql_query("SELECT top 5 * FROM tablename", $msdb);  

  32. while($row = mssql_fetch_array($result)) {  

  33. print_r($row);  

  34. }  

  35. mssql_free_result($result);  

  36. ?>  


  37. (3).PDO版本

  38. [php] view plaincopy

  39. <?php  

  40. header("Content-type: text/html; charset=utf-8");  

  41.   try {  

  42.     $hostname = "数据库IP";  

  43.     $port = 1433;  

  44.     $dbname = "数据库名";  

  45.     $username = "blog.csdn.net.unix21";  

  46.     $pw = "password";  

  47.     $dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");  

  48.   } catch (PDOException $e) {  

  49.     echo "Failed to get DB handle: " . $e->getMessage() . "\n";  

  50.     exit;  

  51.   }  



  52.   $stmt = $dbh->prepare("SELECT top 5 * FROM tablename");  

  53.   $stmt->execute();  

  54.   while ($row = $stmt->fetch()) {  

  55.     print_r($row);  

  56.   }  

  57.   unset($dbh); unset($stmt);  



  58. ?>  
复制代码

不全的地方请查看原文 https://yq.aliyun.com/articles/4 ... sult.46077445VzcVEg
本人是参照 此文章 对应宝塔面板路径进行的修改 linux 命令


使用道具 举报 只看该作者 回复
发表于 2018-3-26 15:10:33 | 显示全部楼层
如果 连接数据库后数据乱码 请在 /usr/local/freetds/etc/freetds.conf 文件中 增加   client charset = cp936

在 php 中 增加 $status = mb_convert_encoding ($re['status'], "UTF-8", "CP936");
使用道具 举报 回复 支持 反对
发表于 2018-3-26 15:19:36 | 显示全部楼层
更正  (1).增加PHP扩展mssql
cd /www/server/php/56/src/ext/mssql   之前拉下了 mssql
使用道具 举报 回复 支持 反对
发表于 2018-6-5 10:10:20 | 显示全部楼层
安装PHP扩展时,安装不上,请问是不是需要下载php源码??
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表