PHP连接MSSQL数据库因密码含$特殊字符失败如何不修改密码解决
问题根因
你代码里密码字符串用了双引号包裹,PHP的双引号字符串规则会自动解析$开头的内容为变量,你定义的$pwd = "1234$67890"实际运行时会把$6识别为未定义的变量,最终$pwd的实际值和你预期的原始密码不一致,导致连接校验失败。
解决方案
有两种不需要修改原始密码的处理方式:
- 方案1:改用单引号包裹密码字符串
PHP单引号字符串不会解析变量和特殊转义字符,直接替换密码行即可:$pwd = '1234$67890'; - 方案2:保留双引号的话,给
$加转义符
用反斜杠转义$,让PHP将其识别为普通字符:$pwd = "1234\$67890";
修正后的完整代码
<?php $servername = "MYSERVER"; $uid = "xxxxxx"; // 这里用单引号包裹密码,避免$被解析为变量 $pwd = '1234$67890'; $databasename = "MSCorpInventory"; $connectionInfo = array ( "Database"=> $databasename, "UID"=> $uid, "PWD"=> $pwd ); /* Connect using SQL Server Authentication. */ $con = sqlsrv_connect ( $servername, $connectionInfo ); if( $con ) { echo "Connection established.<br />"; }else{ echo "Connection could not be established.<br />"; die( print_r( sqlsrv_errors(), true)); } ?>
验证方法
修改代码后可以先输出$pwd确认值是否正确:echo $pwd;,如果输出为1234$67890即为配置正确,再执行数据库连接逻辑即可。
内容的提问来源于stack exchange,提问作者Vignesh
相关产品推荐
相关产品推荐

