Php Can';无法使用PDO连接到本地服务器?

Php Can';无法使用PDO连接到本地服务器?,php,sql-server,pdo,Php,Sql Server,Pdo,我已经在PHP上玩了一段时间了。这是我连接到sql server的方式,它是这样工作的: $serverName = "SNAME"; $connectionInfo = array( "Database"=>"DBNAME", "UID"=>"USERNAME", "PWD"=>"PASSWORD"); $conn = sqlsrv_connect( $serverName, $connectionInfo); $sql = "SELECT X FROM myTable";

我已经在PHP上玩了一段时间了。这是我连接到sql server的方式,它是这样工作的:

$serverName = "SNAME";
$connectionInfo = array( "Database"=>"DBNAME", "UID"=>"USERNAME", "PWD"=>"PASSWORD");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
$sql = "SELECT X FROM myTable";
$query = sqlsrv_query($conn,$sql);
if ($query === false){  
    echo "Could not link to SQL Server";
}
while ($row = sqlsrv_fetch_array($query))
{
    $ARRAY[] = "$row[X]";
}
服务器SNAME位于本地网络上,我可以使用sqlmanagementstudio从计算机连接到它

现在我在网上和其他地方发现PDO是更好的方法。因此,我一直在尝试使用PDO连接到我的服务器,通过以下在线示例。代码如下:

$username = "USERNAME";
$password = "PASSWORD";
try{
   $conn = new PDO('mysql: host=SNAME;port=1433;dbname=DBNAME',$username,$password);
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $data = $conn->query('SELECT X FROM myTable');

   foreach($data as $row) {
        print_r($row); 
   }
}
catch{
    echo 'ERROR: ' . $e->getMessage();
}
当我运行此命令时,我会在页面上看到:

错误:SQLSTATE[HY000][2002]无法建立连接,因为 目标机器主动拒绝了它

现在我知道我的其他信息是正确的,因为我可以使用top block和sql management studio。有没有其他的图书馆或特别需要的东西。我的代码有问题吗

更新 我在我的SQL管理工作室中运行了这个来检查我的端口,它给了我1433

SELECT DISTINCT local_tcp_port FROM sys.dm_exec_connections WHERE local_tcp_port IS NOT NULL

在一个示例中,您使用的是
sqlsrv_connect
,但在另一个示例中,您告诉PDO连接到
'mysql:'
数据库

您需要为SQL Server连接使用正确的DSN字符串

$conn = new PDO('sqlsrv:Server=SNAME,1433;Database=DBNAME',$username,$password);
手册:


注意:确保已安装
PDO\u SQLSRV

sqlsrv\u connect
不用于连接MySQL服务器。它用于连接到Microsoft SQL Server。在PDO连接字符串中,您使用的是
'mysql:'
。您需要确保驱动程序已设置,并告诉PDO连接到
'sqlsrv:'
db而不是
'mysql:'
one。请参阅:我确实安装了PDO_SQLSRV。非常感谢,这很有效。