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

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

我已经看到使用odbc,dblib,mssql等的例子,但是我相信这些驱动程序的连接string应该使用'sqlsrv'?

有没有什么好的例子来说明如何正确地做到这一点? 如果我应该通过其他方法做到这一点,请让我知道。 谢谢!

那么关于PDO的最好的部分就是访问任何数据库都非常简单。 如果你已经安装了这些驱动程序,你应该能够做到:

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

想通了。 很简单:

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

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

这适用于我,在这种情况下是一个远程连接:注意:该端口是我重要的

 $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); } 
 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(); }