docker php连接sql server2000

  最近接了个项目,需要连接远程的sqlserver 2000.当时的服务器环境是ubuntu14,php7。但是在自己安装好相应的拓展后,网页却提示:ODBC Driver 13 for SQL Server does not support connections to SQL Server 2000 or earlier versions,然后在另一台服务器上安装 ODBC Driver 11 的ODBC源时,也提示不支持sql server 2000的数据库。

 当时有二个方案,一是使用php5.2版本自带的mssql拓展来连接mssql数据库,写好相应的接口给项目使用

 另一个是安装pdo_dblib扩展。

后来在一位大佬的提示下,可以给服务器安装docker,在docker拉取相应的镜像来使用就可以啦。

 

第一步. docker的初步学习

这块可以在菜鸟教程学习。

第二步:选择相应的docker镜像

我这块找到的是:apache-php-mssql-odbc镜像     地址:https://hub.docker.com/r/ppoffice/apache-php-mssql-odbc/

1)pull 镜像

docker pull ppoffice/apache-php-mssql-odbc

2)运行镜像

docker run -d -p 8000:80 -v /var/www/tp5:/var/www/tp5  ppoffice/apache-php-mssql-odbc

   -p  8000:80  指的是宿主机8000端口映射到docker内80端口,宿主机的项目文件映射到docker内的对应文件

  注意服务器的8000端口需要在云服务商(如阿里云处)控制台开启。

3)进入镜像

 查看运行docker的镜像

docker ps -a 

docker php连接sql server2000_第1张图片

找到相应的docker id

 docker exec -it 112cfa214ed0  /bin/bash

根据docker id进入docker   下面是进入docker了

4)进入apache的配置文件,查看项目的根目录

vim需要自己安装:apt-get update;      apt-get install vim 

5)使用pdo_dblib连接数据库 sql server 2000

  $db = new PDO ("dblib:host=服务器地址;dbname=数据表名", "用户名", "密码");

  $sql    =  "select top 10 *  from  [dbo].[仓库]";
  $res = $db->query($sql);
      foreach ($res as $k =>$v)
  {
      var_dump($v);
  }
die();

但在这过程中遇到个问题,当sql server2000 的数据表名为英文时,pdo能查询到数据,但当数据表名为中文时,像上面的 ‘仓库’,$res 返回的数据及时空的。后来经过几个小时的百度,实验,测试。原来是需要将sql转下格式

改为:

  $db = new PDO ("dblib:host=服务器地址;dbname=数据表名", "用户名", "密码");

  $sql    =  "select top 10 *  from  [dbo].[仓库]";
  $sql    =  $this->utf8togb($sql);
  $res = $db->query($sql);
      foreach ($res as $k =>$v)
  {
      var_dump($v);
  }
die();
    //编码转换函数
    public function utf8togb($s)
    {
        return iconv('utf-8', 'gbk//IGNORE', $s); // IGNORE 参数是遇到不成转换的字符时忽略
    }

便可以啦

你可能感兴趣的:(SQL,server,2000)