
# thinkphp6 sqlserver 數據庫遇到的問題及解決方案
thinkphp 連接sqlserver 需要進行環境配置,相對mysql 復雜,我本地的環境是使用現在總結如下:thinkphp6+ sqlserver2008? 環境使用phpstudy\_pro 搭建。搭建步驟如下:
**簡單的步驟:TP連SQLSRV的方式:**
1.安裝php\_sqlsrv擴展SQL Server Driver for PHP。具體根據你使用的php版本在微軟網站下載。
2.安裝MSODBCSQL
3.安裝完1、2步后寫一個phpinfo()看看是否生效。
4.tp配置文件數據庫類型改為sqlsrv對應端口用戶名密碼等
**詳細步驟:**
1、**下載一個SQL Server Driver for PHP**
\*\*? ? ? 這是一個擴展包,我是在這里下載的?\*\*[https://download.microsoft.com/download/F/1/B/F1B49733-E519-419B-A192-10DCE6E3C35B/SQLSRV56.EXE](https://links.jianshu.com/go?to=https%3A%2F%2Fsqlserver%2520driver%2520for%2520php%2F)
根據你的php版本選擇對應的安裝包。由于我的PHP版本是7.3.2,所以我下載的是
SQLSRV56.EXE, 運行后選擇解壓目錄為 phpstudy\_pro?/php/ext/

打開php.ini? 添加sqlser擴展
添加兩個

(2)重啟啟動apache或者IIS
(3)這時候你在phpinfo()中的PDO配置中會看見已經存在sqlsrv了。

(4)下載安裝一個Microsoft? ODBC Driver 11 for SQL Server? ? 注意:win10?一般會自帶這個。
[https://www.microsoft.com/download/details.aspx?id=36434](https://links.jianshu.com/go?to=https%3A%2F%2Fodbc%2F)
二、配置你的database.php文件

**三、?測試連接**
1、使用模板測試
引用中使用:?use think\\Facade\\Db;
編寫代碼:
```
$user = Db::table('user')->where('id', 0)->select();
dump($user);
```
2、使用?直連方式
```
*$serverName = "192.168.42.180"; //數據庫服務器地址*
*$uid = "sa";? ? //數據庫用戶名*
*$pwd = "Bs@54321"; //數據庫密碼*
*$connectionInfo = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>"test");*
*$conn = sqlsrv\_connect($serverName, $connectionInfo);*
*if( $conn == false)*
*{*
*? echo "failed";*
*? var\_dump(sqlsrv\_errors());*
*? exit;*
*}else{*
*? echo "ok";*
*}*
*```*
***四、中間遇到的問題總結***
1、無法調試程序、顯示不出問題及代碼所在位置。
? 處理 :將默認在項目目錄文件生成的環境變量示例文件.example.env? 重命名為 .env文件? 即可解決
2、 運行是這個錯誤TP6 SQLSTATE\[HY000\] \[1045\] Access denied for user 'username'@'localhost' (using password: YES)
? 處理: 打開項目目錄,點開.env 文件如圖:

? ? ?修改數據庫配置:

```