Проблемы с подключением существующего интерфейса php к существующей базе данных SQL Server - ошибка odbc - PullRequest
0 голосов
/ 09 января 2011

У меня огромные проблемы с подключением существующего (не запрограммированного мной) интерфейса PHP к существующей БД SQL Server.Я получал доступ к копии этой базы данных SQL Server для целей тестирования на своем локальном компьютере из моего собственного самопрограммируемого интерфейса PHP с использованием интерфейсов odbc "system DSN".Но, вероятно, интерфейс odbc в моей локальной тестовой среде будет выглядеть иначе, чем на реальном сервере.

Я устанавливаю соединение odbc, используя код, который выглядит следующим образом:

$db_server ="localhost"; 
$db_name  ="testdb"; 
$db_user    ="testuser";   
$db_pass    ="test";

$conn = odbc_connect($db_name, $db_user, $db_pass) or die ('Can not connect '. $db_name); 

Это работает нормально - я могу получить доступ к БД, и все работает как надо.

Интерфейс PHP, который я пытаюсь интегрировать в мою среду тестирования, устанавливает соединение следующим образом:

$db_server = "localhost"; # I changed that one from the original server name
$db_user   = "testuser";
$db_pass   = "test";
$db_name   = "testdb";
$connection_id = odbc_connect($dbserver, $dbuser, $dbpass);

Таким образом, кажется, что соединение на сервере выполняется без упоминания поля $ db_name,Звучит странно для меня, но я только новичок в отношении SQL через odbc - обычно я использую только MySQL.

Поэтому, когда код PHP пытается получить доступ к БД, возникает следующая ошибка:

Предупреждение: odbc_connect () [function.odbc-connect]: ошибка SQL: [Microsoft] [ODBC Driver Manager] Не найдено имя источника данных и не указан драйвер по умолчанию, состояние SQL IM002 в SQLConnect в D: \ xampp \ xampp \ htdocs \ testdb \ global.include в строке xxx

xxx - строка, содержащая "$ connection_id = odbc_connect ($ dbserver, $ dbuser, $ dbpass); "

Есть идеи, как заставить эту штуку работать?Я почти абсолютно уверен, что это как-то связано с интерфейсом данных odbc, определенным на моей машине, но сейчас я понятия не имею.

Любая помощь высоко ценится!

Спасибо, Саша

1 Ответ

2 голосов
/ 09 января 2011

Когда вы подключаетесь через ODBC, вы фактически не указываете целевые данные базы данных, вы указываете имя источника данных. Это имя источника данных ищется в реестре источника данных, и оттуда получают подробности соединения. Поэтому вам нужно установить $ db_server в качестве имени источника данных, а не фактического имени хоста.

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