|
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.首先需要编译安装FreeTDS
- 说明:一定要从官网下载最新的版本FreeTDS-0.95 [url]ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz[/url]
- 如果官网实在太慢建议从本人上传的这里一样很快下载:[url]http://download.csdn.net/detail/21aspnet/9000357[/url]
- 请复制#号后面内容
- # wget [url]ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz[/url]
- # tar -zxvf freetds-patched.tar.gz
- # cd freetds-0.95
复制代码如果你只需要上述2种扩展之一,自然只要新增其中一个的.so扩展到php.ini即可。
(4).重启PHP 如果没有正确生成扩展是不能重启php-fpm的。 这时候在phpinfo里就可以看到扩展添加成功的信息了。
- <b>4.使用PHP调用SQLserver</b>
- (1).mssql_connect配置版
- [php] view plaincopy
- <?php
- header("Content-type: text/html; charset=utf-8");
- $msdb=mssql_connect("egServer70","blog.csdn.net.unix21","password");
- if (!$msdb) {
- echo "connect sqlserver error";
- exit;
- }
- mssql_select_db("数据库名",$msdb);
- $result = mssql_query("SELECT top 5 * FROM tablename", $msdb);
- while($row = mssql_fetch_array($result)) {
- print_r($row);
- }
- mssql_free_result($result);
- ?>
- 注意:上面的egServer70就是前面freetds/etc/freetds.conf配置的。
- (2).mssql_connect非配置版
- [php] view plaincopy
- <?php
- header("Content-type: text/html; charset=utf-8");
- //$msdb=mssql_connect("数据库IP","blog.csdn.net.unix21","password");
- //$msdb=mssql_connect("数据库IP:1433","blog.csdn.net.unix21","password");
- $msdb=mssql_connect("数据库IP:49151","blog.csdn.net.unix21","password");
- if (!$msdb) {
- echo "connect sqlserver error";
- exit;
- }
- mssql_select_db("数据库名",$msdb);
- $result = mssql_query("SELECT top 5 * FROM tablename", $msdb);
- while($row = mssql_fetch_array($result)) {
- print_r($row);
- }
- mssql_free_result($result);
- ?>
- (3).PDO版本
- [php] view plaincopy
- <?php
- header("Content-type: text/html; charset=utf-8");
- try {
- $hostname = "数据库IP";
- $port = 1433;
- $dbname = "数据库名";
- $username = "blog.csdn.net.unix21";
- $pw = "password";
- $dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");
- } catch (PDOException $e) {
- echo "Failed to get DB handle: " . $e->getMessage() . "\n";
- exit;
- }
- $stmt = $dbh->prepare("SELECT top 5 * FROM tablename");
- $stmt->execute();
- while ($row = $stmt->fetch()) {
- print_r($row);
- }
- unset($dbh); unset($stmt);
- ?>
复制代码
不全的地方请查看原文 https://yq.aliyun.com/articles/4 ... sult.46077445VzcVEg
本人是参照 此文章 对应宝塔面板路径进行的修改 linux 命令
|