Linux上PHP连接mssql数据库

目录大纲

  • 1.Windows PHP连接mssql
  • 2.Linux PHP连接mssql
    • 2.1.下载和安装freetds:
    • 2.2.配置freetds
  • 3.添加php mssql模块
    • 3.1.编译mssql模块
    • 3.2.修改配置
  • 4.连接mssql
    • 4.1.mssql扩展连接方法
    • 4.2. pdo_dblib扩展连接方法

1. Windows PHP连接mssql

PHP安装在系统为Windows server的服务器上,可以安装sqlsvr扩展来连接ms sql server
下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=20098
若下载无效,可以访问mssql server官网:http://www.microsoft.com/en-us/server-cloud/products/sql-server/
然后搜索php字眼,在结果中找:Microsoft Drivers for PHP for SQL Server

2.Linux PHP连接mssql

LinuxPHP连接mssql,可以安装freetds扩展,然后再添加上mssql或者pdo_dblib模块,就可以连接mssql了。

系统环境:

  • centos 6.5
  • PHP 5.5
  • ms sql server 2008
  • freetds-1.00.9

2.1.下载和安装freetds:

1
2
3
4
5
6
7
#cd /usr/local/src
#wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-patched.tar.gz
#tar -zxvf freetds-patched.tar.gz
#./configure --prefix=/usr/local/freetds --with-tdsver=7.3 --enable-msdblib
#make && make install
#echo "/usr/local/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf
#ldconfig

--with-tdsver=7.37.3版本支持ms sql server 2008,7.4支持ms sql server 2012/2014

查看freetds版本

1
#/usr/local/freetds/bin/tsql -C

2.2.配置freetds

1
2
3
4
5
#vim /usr/local/freetds/etc/freetds.conf
[egServer70]
host =
port =
tds version = 7.3

host:为ms sql server 2008服务器的IPportms sql server 2008使用的端口

3.添加php mssql模块

3.1.编译mssql模块

1
2
3
4
5
6
#cd /usr/local/src/php-5.5.28/ext/mssql/
#/data/php/bin/phpize
#./configure --with-php-config=/data/php/bin/php-config --with-mssql=/usr/local/freetds
#make && make
#ls modules/
#cp modules/mssql.so /data/php/lib/php/extensions/no-debug-non-zts-20121212/

3.2.修改配置

/data/php/etc/php.ini,添加模块,在文件末尾添加:

1
2
[mssql]
extension = /data/php/lib/php/extensions/no-debug-non-zts-20121212/mssql.so

重载php

1
#/etc/init.d/php-fpm reload

方法二: 添加扩展pdo_dblib。只是介绍方法,这里使用方法一,添加mssql

1
2
3
4
5
# cd /usr/local/src/php-5.5.28/ext/pdo_dblib/
linux下用phpize给PHP动态添加扩展
# /data/php/bin/phpize
# ./configure --with-php-config=/data/php/bin/php-config --with-pdo-dblib=/usr/local/freetds/
# make && make instal

4.连接mssql

测试freetds功能是否正常:

1
/usr/local/freetds/bin/tsql -H IP -p 端口 -U 用户 -P 密码

查看phpinfo,看是否有mssql模块,如果有,那就可以正常连接mssql了。

4.1.mssql扩展连接方法

  • 配置了/usr/local/freetds/etc/freetds.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php 
    header("Content-type: text/html; charset=utf-8");
    $msdb=mssql_connect("egServer70","dbuser","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);
    ?>
  • 没有配置p/usr/local/freetds/etc/freetds.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php 
    header("Content-type: text/html; charset=utf-8");
    //$msdb=mssql_connect("数据库IP","dbuser","password");
    //$msdb=mssql_connect("数据库IP:1433","dbuser","password");
    $msdb=mssql_connect("数据库IP:49151","dbuser","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);
    ?>
    ```

    #### 4.2. pdo_dblib扩展连接方法:
    若使用了方法二:pdo_dblib,则连接案例代码如下:
    ```shell
    <?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);

    ?>

官方链接:
http://php.net/manual/zh/ref.pdo-dblib.php
http://php.net/manual/zh/function.mssql-connect.php

参考文章连接:http://blog.csdn.net/21aspnet/article/details/47451253

文章目录
  1. 目录大纲
  2. 1. Windows PHP连接mssql
  3. 2.Linux PHP连接mssql
    1. 2.1.下载和安装freetds:
    2. 2.2.配置freetds
  4. 3.添加php mssql模块
    1. 3.1.编译mssql模块
    2. 3.2.修改配置
  5. 4.连接mssql
    1. 4.1.mssql扩展连接方法