Подключитесь к SQL Server 2008 с помощью PDO - PullRequest
0 голосов
/ 28 апреля 2009

Я пытаюсь подключиться к SQL Server 2008 (не экспресс) с PHP 5.2.9-2 на Windows XP sp2. Я могу подключиться к удаленному SQL Server нормально из SQL Server Management Studio с той же машины.

Моя первая попытка была такой:

$conn = new PDO("mssql:host={$host};dbname={$db}", $user, $pass);

Что выдает эту ошибку:

PHP Fatal error:  
Uncaught exception 'PDOException' with message 
'SQLSTATE[0100] Unable to connect: SQL Server is unavailable or does not exist.  
Access denied. (severity 9)'

Вторая попытка (найдено на обмен экспертами )

$conn = new PDO("odbc:Driver={SQL Server Native Client 10.0};Server={$host};Database={$db};Uid={$user};Pwd={$pass}", 
                         $user, $pass);

Это работает, но я не могу использовать PDO::lastInsertId(), который я бы хотел иметь:

 Driver does not support this function: driver does not support lastInsertId()

У вас есть предложения? Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 28 апреля 2009

Я почти уверен, что pdo с типом сервера данных mssql для подключения требуется dblib. у вас установлен dblib на машине? убедитесь, что вы можете найти ntwdblib.dll где-нибудь в пути в вашей системе. я знаю, что это не совпадает с сообщением об ошибке, которое вы получаете, но я не уверен, что доверяю сообщению об ошибке.

1 голос
/ 28 апреля 2009

Я обновил ntwdblib.dll, как предложено здесь , и теперь он работает.

К сожалению, я до сих пор не могу использовать PDO::lastInsertId(), потому что, очевидно, этот драйвер тоже не поддерживает его, так что на самом деле это не стоило хлопот. Однако я могу использовать эквивалент SELECT @@IDENTITY as Id.

0 голосов
/ 28 апреля 2009

Вы не можете использовать аутентификацию SQL Server, поскольку разрешена только аутентификация Windows.

Проверьте, работает ли на сервере аутентификация в смешанном режиме.

Также проверьте, если этот ТАК вопрос поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...