2012-10-05 152 views

回答

34

那么这是关于PDO的最好的部分是它很容易访问任何数据库。只要你已经安装了这些驱动程序,你应该能够只是做:

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

感谢您成为Stackoverflow的十个问题中的第一个,以获得正确的连接参数。我所看到的其他样本都有“主机”而不是“服务器”。 – Mark

7

想通了。很简单:

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

你要知道,在我的经验,也是其他(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); 
+0

你可以检查我的问题相关http://serverfault.com/questions/722670/s1090unixodbcdriver-managerinvalid-string-or-buffer-length –

+0

这不适合我用花括号。对于SQL Server'$ mssqldriver ='ODBC Driver 11';' –

+0

,在旧服务器上,sqlsrv驱动程序不会连接。这为我节省了一大笔时间。谢谢! –

3

这个工作对我来说,在这种情况下是一个远程连接: 注:港口是重要的,我

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

} 
相关问题