2012-10-05 12 views
20

Próbuję połączyć się z istniejącą bazą danych SQL Server za pomocą PDO z drivers provided by Microsoft.Połącz się z serwerem SQL za pomocą PDO przy użyciu sterownika SQL Server

Widziałem przykłady przy użyciu odbc, dblib, mssql itp., Jednak uważam, że ciąg połączenia z tymi sterownikami powinien używać "sqlsrv"?

Czy są dobre przykłady tego, jak to zrobić? Jeśli powinienem to zrobić za pomocą innej metody, proszę dać mi znać. Dzięki!

Odpowiedz

34

Cóż, najlepszą częścią dotyczącą PDO jest to, że dostęp do dowolnej bazy danych jest bardzo łatwy. Pod warunkiem, że zostały zainstalowane te sterowniki, powinieneś być w stanie po prostu zrobić:

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

Dziękujemy za pierwsze z dziesięciu pytań na temat Stackoverflow, aby uzyskać prawidłowe parametry połączenia. Inne próbki, na które patrzyłem, miały "Host" zamiast "Serwer". – Mark

7

Wyobraziłem to. Całkiem proste:

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

Pamiętaj, że w moim doświadczeniu, a także innych (PHP - Why is new SQLSRV driver slower than the old mssql driver?), który za pomocą PDO_SQLSRV jest sposób wolniejsze niż przez PDO_ODBC.

Jeśli chcesz użyć szybciej PDO_ODBC można użyć:

//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

Możesz sprawdzić moje pytanie związane z http://serverfault.com/questions/722670/s1090unixodbcdriver-managerinvalid-string-or-buffer-length –

+0

To nie zadziałało dla mnie z nawiasami klamrowymi. Działa świetnie jako '$ mssqldriver = 'sterownik ODBC 11 dla SQL Server';' –

+0

na nowym serwerze, którego stary sterownik sqlsrv nie połączy. to uratowało mi BUNCH czasu. Dziękuję Ci! –

3

Działa to dla mnie, aw tym przypadku było zdalne połączenie: Uwaga: Port był ważny dla mnie

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

} 
Powiązane problemy