2016-07-06 34 views
9

Connessione a stringa sqlsrv non funzionante.Impossibile connettersi a SQL Server con PHP

$login = new PDO("sqlsrv:server=MYSQLSERVER\SQLEXPRESS;Database=db_name", "user", "passw"); 

e devo messaggio di errore: Fatal error: Invalid handle returned.

Sono sicuro al 101% che i dati di accesso siano OK. Perché funziona su altri progetti. Potrebbe essere un problema PHP 7?

+0

Solo un paio di cose da stabilire prega; Come sua istanza denominata usa le porte dinamiche che vengono bloccate da un firewall locale? Inoltre, sei consapevole del fatto che SQL Express non ha la connessione TCP abilitata per impostazione predefinita. –

+0

Sto usando il server SQl corretto ma questo nome è solo per illustrazione. Inoltre ho appena trovato a volte lavoro e qualche volta restituisco l'errore ... – Klapsius

+0

Quale versione della libreria SQLSRV hai installato? Quelli stabili non supportano PHP/7, devi recuperare una notte dal repository GibHub. –

risposta

2

Sembra che per la connessione a MS-SQL, è necessario utilizzare ODBC.

Riferimento: http://php.net/manual/en/pdo.construct.php#120705

$odbc="odbc:Driver={SQL Server};Server=$server;Database=$database;"; 

$cnx = new PDO($odbc , $user, $password); 
+0

Mentre ODBC dovrebbe funzionare per la creazione di una connessione a un server MSSQL, anche SQLSRV dovrebbe funzionare. [Questo articolo MSDN] (https://blogs.msdn.microsoft.com/brian_swan/2010/03/08/mssql-vs-sqlsrv-whats-the-difference-part-1/) illustra bene ODBC vs SQLSRV. La risposta PHP che hai collegato fornisce un esempio per la connessione a MSSQL usando ODBC, non è l'unico modo. – afeique

+0

[Ecco un esempio di PHP] (https://docs.microsoft.com/en-us/sql/connect/php/example-application-pdo-sqlsrv-driver) che utilizza PDO e il driver SQLSRV. – afeique

+1

@afeique, scusa cerco di rimanere fedele al server web il più possibile. In entrambi i casi si confondono i prefissi 'mssql' e' sqlsrv' con 'odbc'. Trovo che a volte è meglio ridurlo a un design confermato e, se funziona, aggiungere più complicazioni per trovare il 'why'. In sostanza, pulire la lavagna per il modello di esecuzione minima da verificare. – GoldBishop

Problemi correlati