2012-10-05 16 views
20

drivers provided by MicrosoftのPDOを使用して既存のSQL Serverデータベースに接続しようとしています。SQL Serverドライバを使用してPDO経由でSQL Serverに接続

odbc、dblib、mssqlなどを使用した例がありますが、これらのドライバとの接続文字列には 'sqlsrv'を使用する必要がありますか?

これを正しく行うにはどのような良い例がありますか?もし私が他の方法でこれをやろうとしたら、教えてください。ありがとう!

答えて

34

PDOの最も重要な部分は、どのデータベースにもアクセスするのが簡単だということです。

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

Stackoverflowの10個の質問のうち最初の方が、接続パラメータを正しく取得してくれてありがとうございます。私が見ていた他のサンプルには、「サーバー」ではなく「ホスト」がありました。 – Mark

7

これを実証しました。かなり単純です:

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

マインドをあなたはPDO_SQLSRVを使用すると、PDO_ODBCを通じてより道遅い、私の経験とも(PHP - Why is new SQLSRV driver slower than the old mssql driver?)他のことをすることを:提供あなたはこれらのドライバをインストールした、あなただけ行うことができる必要があります。

あなたが使用することができます速く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

をチェックすることができますこれは私の中括弧ではうまくいかなかった。 '$ mssqldriver = 'SQL Server用のODBCドライバ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(); 

} 
関連する問題