Microsoft SQL Server PDO连接报错SQLSTATE[HY000][2002]求助排查
问题原因分析及解决方向
核心错误:使用了错误的PDO驱动
你的代码里用的是mysql:host=$servername的连接字符串,这是用于MySQL数据库的PDO驱动,但你要连接的是Microsoft SQL Server,两者完全不兼容。SQL Server对应的PDO驱动是sqlsrv或dblib(取决于环境),连接字符串格式完全不同。其他可能的原因
- 未安装PHP的SQL Server扩展:XAMPP默认不包含SQL Server的PDO扩展,需要手动安装对应PHP版本和系统架构的
pdo_sqlsrv与sqlsrv扩展。 - SQL Server端口配置错误:SQL Server默认端口为1433,若你的实例使用非默认端口,需在连接字符串中明确指定(例如
;port=1433)。 - TCP/IP协议未启用:在SQL Server配置管理器中,检查SQL Server网络配置下的目标实例是否启用了TCP/IP协议,且监听端口正确。
- 防火墙拦截:本地或服务器端的防火墙可能阻止了XAMPP所在服务器访问SQL Server的1433端口。
- 未安装PHP的SQL Server扩展:XAMPP默认不包含SQL Server的PDO扩展,需要手动安装对应PHP版本和系统架构的
修正后的连接示例(使用sqlsrv驱动)
<?php $servername = "你的服务器名"; $username = "你的用户名"; $password = "你的密码"; $dbname = "你的数据库名"; try { // SQL Server的PDO连接字符串格式 $conn = new PDO("sqlsrv:Server=$servername;Database=$dbname;charset=utf8", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } ?>
内容的提问来源于stack exchange,提问作者SamATEIT
相关产品推荐
相关产品推荐

