2016-07-25 3 views
1

Я видел несколько вопросов, задающих вопросы, но на них обычно ответят, имея доступ к серверу для установки дополнительных пакетов, таких как FreeTDS. У нас нет такого доступа, поскольку сервер linux размещен с 1and1.Доступ к удаленному серверу MSSQL из размещенного linux PHP

Мой код (от ранее вопроса кто-то еще здесь) является:

try { 
    $hostname = "xx.xx.xx.xx"; 
    $port = xxxxx; 
    $dbname = "ClientDatabase"; 
    $username = "uuuu"; 
    $pw = "pppp"; 
    $dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw"); 
    } catch (PDOException $e) { 
    echo "Failed to get DB handle: " . $e->getMessage() . "\n"; 
    exit; 
    } 
    $stmt = $dbh->prepare("select name from master..sysdatabases where name = db_name()"); 
    $stmt->execute(); 
    while ($row = $stmt->fetch()) { 
    print_r($row); 
    } 
    unset($dbh); unset($stmt); 

Сообщения об ошибке я получаю:

Failed to get DB handle: could not find driver 

MSSQL сервер доступен, так что я могу добавить функции к этому при необходимости. Сервер MSSQL также запускает IIS7, но не запускает PHP. Я очень мало знаю об IIS7, но будет ли проще запускать скрипты PHP, а не размещенную linux-бокс?

Может ли кто-нибудь сообщить, могу ли я действительно подключиться к серверу MSSQL?

Спасибо заранее,

Dave

ответ

0

Вы пробовали mssql_connect?

Вот синтаксис: mssql_connect ([строка $ имя_сервера [, строка $ имя пользователя [, строка $ пароль [, BOOL $ new_link = ложь]]]])

В вашем случае это будет:

$link = mssql_connect($hostname, $username, $pw); 
mssql_select_db($dbname, $link); 

Обратите внимание, что $ hostname должно содержать имя экземпляра MSSQL. например «KALLESPC \ SQLEXPRESS»

+0

Я считаю, что mssql_connect является устаревшим в PHP 5.4 Благодаря Кажется, что $ ДВГА = новый PDO ("DBLIB: хост = $ имени хоста: $ порт; имя_бд = $ имя_бд », "$ имя пользователя", "$ PW"); неверно и должно быть: $ dbh = new PDO ("sqlsrv: Server = $ hostname: $ port; Database = $ dbname", "$ username", "$ pw"); Все еще не работает, но движется вперед. – demsley

0

После долгих проб и ошибок я в.

try { 
    $hostname = "localhost"; 
    $port = 123456; 
    $dbname = "ClientDatabase"; 
    $username = "uuuu"; 
    $pw = "pppp"; 
    $dbh = new PDO ("sqlsrv:Server=$hostname,$port;Database=$dbname","$username","$pw"); 
    } catch (PDOException $e) { 
    echo "Failed to get DB handle: " . $e->getMessage() . "\n"; 
    exit; 
    } 
    $stmt = $dbh->prepare("select name from master..sysdatabases where name = db_name()"); 
    $stmt->execute(); 
    while ($row = $stmt->fetch()) { 
    print_r($row); 
    } 
    unset($dbh); unset($stmt); 

Благодаря тем, кто ответил, и те, кто отвечал на подобные вопросы другие. Получил там ... в конце концов.

Приветствие

Dave