2015-09-10 5 views
0

Я немного поиграл в PHP. Это, как я подключиться к SQL серверу, и она работает:Не удается подключиться к локальному серверу с помощью PDO?

$serverName = "SNAME"; 
$connectionInfo = array("Database"=>"DBNAME", "UID"=>"USERNAME", "PWD"=>"PASSWORD"); 
$conn = sqlsrv_connect($serverName, $connectionInfo); 
$sql = "SELECT X FROM myTable"; 
$query = sqlsrv_query($conn,$sql); 
if ($query === false){ 
    echo "Could not link to SQL Server"; 
} 
while ($row = sqlsrv_fetch_array($query)) 
{ 
    $ARRAY[] = "$row[X]"; 
} 

Сервер SNAME находится в локальной сети, и я могу подключиться к нему с компьютера с помощью SQL Management Studio.

Теперь, смотря онлайн и другие места, я понял, что PDO - лучший способ пойти. Поэтому я пытался подключиться к моему серверу с помощью PDO, следуя примерам в Интернете. Вот код:

$username = "USERNAME"; 
$password = "PASSWORD"; 
try{ 
    $conn = new PDO('mysql: host=SNAME;port=1433;dbname=DBNAME',$username,$password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $data = $conn->query('SELECT X FROM myTable'); 

    foreach($data as $row) { 
     print_r($row); 
    } 
} 
catch{ 
    echo 'ERROR: ' . $e->getMessage(); 
} 

Когда я запускаю это я получаю это на моей странице:

ERROR: SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.

Теперь я знаю, что моя другая информация является правильным, так как я могу использовать верхний блок и управления SQL Studio. Есть ли какая-нибудь библиотека или что-то особенное. Есть ли проблема с моим кодом?

UPDATE Я побежал это в моем SQL Management Studio, чтобы проверить мой порт, и он дал мне 1433

SELECT DISTINCT local_tcp_port FROM sys.dm_exec_connections WHERE local_tcp_port IS NOT NULL 
+2

'sqlsrv_connect' не используется для подключения к серверам MySQL. Он используется для подключения к Microsoft SQL Server. В вашей строке подключения PDO вы используете '' mysql: ''. Вы должны убедиться, что установлен драйвер ['PDO_SQLSRV'] (http://php.net/manual/en/ref.pdo-sqlsrv.php) и сообщить PDO подключиться к' 'sqlsrv: '' db а не '' mysql: ''. См .: http://php.net/manual/en/ref.pdo-sqlsrv.connection.php –

ответ

0

В одном примере, вы используете sqlsrv_connect, но в другой вы говорите PDO в подключитесь к базе данных 'mysql:'.

Для подключения SQL Server необходимо использовать строку DSN.

$conn = new PDO('sqlsrv:Server=SNAME,1433;Database=DBNAME',$username,$password); 

Руководство: http://php.net/manual/en/ref.pdo-sqlsrv.connection.php

P.S. Убедитесь, что у вас установлен PDO_SQLSRV. http://php.net/manual/en/ref.pdo-sqlsrv.php

+0

У меня был установлен PDO_SQLSRV. Большое спасибо, что это работает. – USER420

Смежные вопросы