使用 SQL Server Driver 通过 PDO 连接到 SQL Server
Posted
技术标签:
【中文标题】使用 SQL Server Driver 通过 PDO 连接到 SQL Server【英文标题】:Connect to SQL Server through PDO using SQL Server Driver 【发布时间】:2012-09-26 16:28:53 【问题描述】:我正在尝试使用带有drivers provided by Microsoft 的 PDO 连接到现有 SQL Server 数据库。
我见过使用 odbc、dblib、mssql 等的示例,但是我认为与这些驱动程序的连接字符串应该使用 'sqlsrv'?
有没有很好的例子来说明如何正确地做到这一点?如果我应该通过其他方法执行此操作,请告诉我。谢谢!
【问题讨论】:
【参考方案1】:嗯,关于 PDO 最好的部分是它可以很容易地访问任何数据库。如果您已经安装了这些驱动程序,您应该能够:
$db = new PDO("sqlsrv:Server=YouAddress;Database=YourDatabase", "Username", "Password");
【讨论】:
我需要在服务器上启用哪些驱动程序?只启用 pdo_odbc 会起作用吗?【参考方案2】:请注意,根据我和其他 (php - Why is new SQLSRV driver slower than the old mssql driver?) 的经验,使用 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);
【讨论】:
你可以检查我的问题相关serverfault.com/questions/722670/… 这对我来说不适用于花括号。非常适合$mssqldriver = 'ODBC Driver 11 for SQL Server';
在新服务器上,旧的 sqlsrv 驱动程序无法连接。这为我节省了很多时间。谢谢!【参考方案3】:
想通了。很简单:
new PDO("sqlsrv:server=[sqlservername];Database=[sqlserverdbname]", "[username]", "[password]");
【讨论】:
【参考方案4】:这对我有用,在这种情况下是远程连接: 注意:端口对我很重要
$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);
【讨论】:
【参考方案5】:$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());
【讨论】:
【参考方案6】: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();
【讨论】:
以上是关于使用 SQL Server Driver 通过 PDO 连接到 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章
[Microsoft][ODBC SQL Server Driver]超时已过期
Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server不存在或访问被拒绝
Perl DBI / MS ODBC Driver (LinuxL:RHEL) / SQL-Server:如何插入/更新 BLOB varbinary(max) 数据?
(转) java 通过 jdbc 链接 ms sql server 中出现 "no suitable driver for ..."