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

Dre*_*rew 25 php windows sql-server pdo

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

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

有没有很好的例子说明如何正确地做到这一点?如果我应该通过其他方法这样做,请告诉我.谢谢!

Mat*_*ern 49

那么PDO最好的部分是访问任何数据库都很容易.如果您已安装这些驱动程序,您应该能够:

$db = new PDO("sqlsrv:Server=YouAddress;Database=YourDatabase", "Username", "Password");
Run Code Online (Sandbox Code Playgroud)


Jan*_*Jan 10

请注意,根据我的经验以及其他(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);
Run Code Online (Sandbox Code Playgroud)


Dre*_*rew 7

想出这个.很简单:

 new PDO("sqlsrv:server=[sqlservername];Database=[sqlserverdbname]",  "[username]", "[password]");
Run Code Online (Sandbox Code Playgroud)


Lui*_*uis 7

这对我有用,在这种情况下是远程连接:注意:端口对我来说很重要

$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);
} 
Run Code Online (Sandbox Code Playgroud)