thinkphp6 sqlserver 数据库遇到的问题及解决
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
根据你的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
二、配置你的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 文件如图:
修改数据库配置: