使用 SQL Server 驱动程序通过 PDO 连接到 SQL Server

问题描述 投票:0回答:7

我正在尝试使用 PDO 和 Microsoft 提供的 驱动程序连接到现有的 SQL Server 数据库。

我见过使用 odbc、dblib、mssql 等的示例,但是我相信这些驱动程序的连接字符串应该使用“sqlsrv”?

有什么好的例子可以说明如何正确执行此操作吗?如果我应该通过其他方法执行此操作,请告诉我。谢谢!

php sql-server windows pdo
7个回答
67
投票

PDO 最好的部分是访问任何数据库都非常容易。如果您已经安装了这些驱动程序,您应该能够执行以下操作:

$db = new PDO("sqlsrv:Server=YouAddress;Database=YourDatabase", "Username", "Password");

12
投票

请注意,根据我的经验以及其他经验(PHP - 为什么新的 SQLSRV 驱动程序比旧的 mssql 驱动程序慢?),使用 PDO_SQLSRV 比通过 PDO_ODBC 慢得多。

如果您想使用更快的 PDO_ODBC,您可以使用:

//use any of these or check exact MSSQL ODBC drivername in "ODBC Data Source Administrator"
$mssqldriver = '{SQL Server}'; 
$mssqldriver = '{SQL Server Native Client 11.0}';
$mssqldriver = '{ODBC Driver 11 for SQL Server}';

$hostname='127.0.0.1';
$dbname='test';
$username='user';
$password='pw';
$dbDB = new PDO("odbc:Driver=$mssqldriver;Server=$hostname;Database=$dbname", $username, $password);

9
投票

这对我有用,在本例中是远程连接: 注意:端口对我来说很重要

$dsn = "sqlsrv:Server=server.dyndns.biz,1433;Database=DBNAME";
$conn = new PDO($dsn, "root", "P4sw0rd");
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$sql = "SELECT * FROM Table";

foreach ($conn->query($sql) as $row) {
    print_r($row);
} 

8
投票

弄清楚了这一点。很简单:

 new PDO("sqlsrv:server=[sqlservername];Database=[sqlserverdbname]",  "[username]", "[password]");

2
投票
try
{

    $conn = new PDO("sqlsrv:Server=$server_name;Database=$db_name;ConnectionPooling=0", "", "");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch(PDOException $e)
{

    $e->getMessage();

}

2
投票
$servername = "";
$username = "";
$password = "";
$database = "";
$port = "1433";
try {
    $conn = new PDO("sqlsrv:server=$servername,$port;Database=$database;ConnectionPooling=0", $username, $password,
        array(
            PDO::ATTR_PERSISTENT => true,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        )
    );
} catch (PDOException $e) {
    echo ("Error connecting to SQL Server: " . $e->getMessage());
}

0
投票

从 Microsoft 下载适用于 SQL Server 的 PHP 的 Microsoft 驱动程序:https://www.microsoft.com/en-us/download/details.aspx?id=20098

根据您安装的PHP版本提取以下文件。我的是 PHP 8.2.1

  • php_pdo_sqlsrv_82_ts_x64.dll
  • php_sqlsrv_82_ts_x64.dll

将这些文件复制到 php ext 文件夹

将以下扩展添加到 php.ini 文件中:

  • 扩展=php_pdo_sqlsrv_82_ts_x64.dll
  • 扩展名=php_sqlsrv_82_ts_x64.dll

启用以下扩展:

  • 扩展名=odbc
  • 扩展名=pdo_odbc

建立连接:

$conn = new PDO("sqlsrv:Server=localhost;Database=$DatabaseName", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'PDO SQL Server Connection successful</br>'; 
© www.soinside.com 2019 - 2024. All rights reserved.