web-dev-qa-db-fra.com

Connexion à SQL Server via PDO à l'aide du pilote SQL Server

J'essaie de me connecter à une base de données SQL Server existante à l'aide de PDO avec les pilotes fournis par Microsoft .

J'ai vu des exemples utilisant odbc, dblib, mssql, etc. Cependant, je pense que la chaîne de connexion avec ces pilotes doit utiliser 'sqlsrv'?

Existe-t-il de bons exemples de la manière de le faire correctement? Si je devais le faire via une autre méthode, faites-le-moi savoir. Merci!

21
Drew

Le point fort des PDO est qu’il est assez facile d’accéder à une base de données. À condition que vous ayez installé ces pilotes, vous devriez être capable de faire simplement:

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

Rappelez-vous que selon mon expérience et d'autres ( PHP - Pourquoi le nouveau pilote SQLSRV est-il plus lent que l'ancien pilote mssql? ) que l'utilisation de PDO_SQLSRV est bien plus lente que via PDO_ODBC.

Si vous souhaitez utiliser le PDO_ODBC plus rapide, vous pouvez utiliser:

//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);
10
Jan

Compris ça. Assez simple:

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

Cela fonctionne pour moi, et dans ce cas il y avait une connexion à distance: Remarque: le port était IMPORTANT pour moi

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

}
0
hassan javaid