PHP7.3连接本地SQL Server2019报连接字符串无效错误求助
问题排查与解决方法
核心报错原因
你遇到的Connection string is not valid [87]报错,核心是PDO连接字符串解析失败,问题都出在测试代码的参数写法和PHP转义规则不匹配:
- PHP字符串中反斜杠是转义字符,原代码里服务器地址、用户名里的反斜杠未做转义,导致解析后的实际连接字符串内容不符合ODBC驱动要求
- SQL Server Windows身份验证的参数配置错误
具体修复步骤
- 修正字符串转义规则:所有在PHP字符串中写的Windows主机实例名里的反斜杠,都需要写两次(
\\)才能被识别为普通反斜杠字符 - 适配Windows身份验证逻辑:你使用本地Windows账号登录SQL Server,不需要手动传入账号密码,直接在DSN中添加
Trusted_Connection=yes参数即可完成身份校验 - 确认SQL Server基础配置:
- 打开SQL Server配置管理器,进入
SQLEXPRESS实例的网络配置,开启TCP/IP协议 - 启动SQL Server Browser服务,确保实例名可以被正常解析
- 确认
test数据库已创建,你的Windows账号DESKTOP-BCN88UC\JK拥有该数据库的访问权限 - 如果你没有手动给SQLEXPRESS实例配置固定1433端口,不要在server参数后加
,1433,默认SQLEXPRESS使用动态端口,加固定端口会导致连接失败
- 打开SQL Server配置管理器,进入
修正后的测试代码
<?php try { $conn = new PDO("sqlsrv:server=DESKTOP-BCN88UC\\SQLEXPRESS;Database=test;Trusted_Connection=yes"); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "数据库连接成功"; } catch(Exception $e) { die(print_r($e->getMessage())); } ?>
内容的提问来源于stack exchange,提问作者jkgyan
相关产品推荐
相关产品推荐

