我正在尝试使用带有drivers provided by Microsoft的PDO连接到现有的SQL Server数据库。
我见过使用odbc,dblib,mssql等的示例,但我相信这些驱动程序的连接字符串应该使用'sqlsrv'?
有没有很好的例子说明如何正确地做到这一点?如果我应该通过其他方法这样做,请告诉我。谢谢!
答案 0 :(得分:45)
关于PDO最好的部分是访问任何数据库都很容易。如果您已经安装了这些驱动程序,那么您应该能够:
$db = new PDO("sqlsrv:Server=YouAddress;Database=YourDatabase", "Username", "Password");
答案 1 :(得分:10)
请注意,根据我的经验以及其他(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);
答案 2 :(得分:7)
想出来了。很简单:
new PDO("sqlsrv:server=[sqlservername];Database=[sqlserverdbname]", "[username]", "[password]");
答案 3 :(得分: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);
}
答案 4 :(得分:1)
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();
}
答案 5 :(得分:0)
$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());
}