PHP,ThinkPHP5,连接SqlServer数据库

下载 Microsoft Drivers for PHP for SQL Server 并配置
  • 微软官方驱动地址

  • 在window sandbox中执行安装文件(实际上只需要dll文件,所以不在主机安装),并根据php版本和是否Thread Safety取用需要的dll文件,我取用的是【php_pdo_sqlsrv_72_ts_x64.dll】和【php_sqlsrv_72_ts_x64.dll】

  • 两个dll复制到D:\xampp\php\ext并配置php.ini,phpinfo查看,会出现pdo_sqlsrv的信息

    ;KSalomo Sqlserver extension
    extension=php_pdo_sqlsrv_72_ts_x64.dll
    extension=php_sqlsrv_72_ts_x64.dll
    
测试范例及注意事项
  • 直接使用sqlsrv测试

    $serverName = "localhost"; //数据库服务器地址
    $uid = "sa";     //数据库用户名
    $pwd = "123"; //数据库密码
    $connectionInfo = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>"yourDatabaseName");
    $conn = sqlsrv_connect($serverName, $connectionInfo);
    $data= sqlsrv_query($conn,"select * from yourTable");
    
    if($data==true){
        while($row=sqlsrv_fetch_array($data,SQLSRV_FETCH_ASSOC))
        {
            echo empty($row['DisplayName'])?'2':iconv("GBK", "UTF-8", $row['DisplayName'])."<br/>";
        }
    }
    
  • 使用PDO测试

    $db = new PDO("sqlsrv:Server=localhost;Database=yourDatabaseName", "sa", "123");
    $sql = "SELECT * FROM yourTable";
    $res = $db->query($sql);
    while ($row = $res->fetch()){
    print_r($row);
    }
    
  • 使用ThinkPHP5测试,一定注意database.php的配置方式,稍有出入就查询不成功

    • database.php,仅列出部分必须配置项

      <?php
          
      return [
          // 数据库类型
          'type'            => 'sqlsrv',
          // 服务器地址,不可使用127.0.0.1,否则报错:SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]命名管道提供程序: 无法打开与 SQL Server 的连接 [5]. 
          'hostname'        => 'localhost',
          // 数据库名
          'database'        => 'yourDatabaseName',
          // 用户名
          'username'        => 'sa',
          // 密码
          'password'        => '123',
          // 端口,保留空,不可填1433,否则报错:SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]TCP 提供程序: 由于目标计算机积极拒绝,无法连接。 
          'hostport'        => '',
          // 连接dsn
          'dsn'             => '',
          // 数据库连接参数
          'params'          => [],
          // 数据库编码默认采用utf8
          'charset'         => 'GBK'
      ];
      
      
    • 测试代码

      Db::query('SELECT * FROM yourTable');
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章