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');
      
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章