我一直在玩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位于本地网络上,我可以使用Sql Management Studio从我的计算机连接到它。
现在查看在线和其他地方我已经意识到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]无法建立连接,因为 目标机器积极拒绝它。
现在我知道我的其他信息是正确的,因为我可以使用顶部块和sql管理工作室。有没有其他图书馆或特殊需要的东西。我的代码有问题吗?
更新 我在我的SQL Management Studio中运行它来检查我的端口,它给了我1433.
SELECT DISTINCT local_tcp_port FROM sys.dm_exec_connections WHERE local_tcp_port IS NOT NULL
答案 0 :(得分:0)
在一个示例中,您使用的是sqlsrv_connect
,但在另一个示例中,您告诉PDO连接到'mysql:'
数据库。
您需要将正确的 DSN字符串用于SQL Server连接。
$conn = new PDO('sqlsrv:Server=SNAME,1433;Database=DBNAME',$username,$password);
手动:http://php.net/manual/en/ref.pdo-sqlsrv.connection.php
P.S。确保已安装PDO_SQLSRV
。 http://php.net/manual/en/ref.pdo-sqlsrv.php