我正在开发一个必须通过 PHP 和 PDO 连接到 MS SQL 2008 R2 的 Web 应用程序。我已经成功安装了驱动程序并检查了它:
var_dump(PDO::getAvailableDrivers());
我使用两台 Windows 服务器(都是 2008),一台用于 SQL 数据库,另一台用于 XAMPP。我们大约有八个程序从其他服务器连接到 SQL 服务器,所以我的猜测是连接问题不是 SQL 服务器本身。
这里有一个非常简单的示例,可以从应用程序插入 MS SQL 数据库表:
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$company = $_POST['company'];
$name = $_POST['name'];
$firstname = $_POST['firstname'];
$number = $_POST['number'];
$host = $_POST['host'];
$licenseplate = $_POST['plate'];
$reason = $_POST['site'];
$timein = date('Y-m-d H:i:s');
$db = new PDO("sqlsrv:Server=MSSQLSERVER2,1433;Database=visitormod", "**************", "******************"); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO visitors (visitor_name, visitor_firstname, visitor_company, visitor_number, visitor_plate, visitor_in) VALUES (:lname, :fname, :company, :pnumber, :lplate, :tin)";
$q = $db->prepare($sql);
$q->execute(array(':lname'=>$name, ':fname'=>$firstname, ':company'=>$company, ':pnumber'=>$number, ':lplate'=>$licenseplate, ':tin'=>$timein));
这是一些额外的信息:
SQL 服务器的主机名(计算机名本身)=SQLSERVER
SQL SERVER 的名称(在 SQL Server Management Studio 下 = 我连接到的位置)=MSSQLSERVER2
以下是我的问题:
我无法成功连接到数据库我的猜测是它与此有关
$db = new PDO("sqlsrv:Server=MSSQLSERVER2,1433;Database=visitormod", "**************", "******************");
我在这里使用Server=MSSQLSERVER2
,但这只是 SQL Server Management Studio 中服务器的名称。我无处指向服务器本身,这可能是我的问题,我需要 ODBC 连接?我在互联网上阅读了 Linux 环境所必需的内容?
有人可以帮助并解释我做错了什么吗?我必须建立一个额外的连接吗?
我想问的最后一个问题是我在哪里可以看到我必须连接到哪个端口号?
IE
new PDO("sqlsrv:Server=MSSQLSERVER2,1433;
这是我在页面上收到的错误:
致命错误:带有消息“SQLSTATE [IMSSP]”的未捕获异常“PDOException”:此扩展需要 Microsoft SQL Server 2012 Native Client ODBC 驱动程序才能与 SQL Server 通信。访问以下 URL 以下载适用于 x86 的 Microsoft SQL Server 2012 Native Client ODBC 驱动程序:go.microsoft.com/fwlink/?LinkId=163712';