Невозможно подключиться к msSQL базой данных через PHP

Должно быть легко связать любую библиотеку C с C ++ в целом, а не только со стандартными заголовками.

Обратите внимание, что вам, возможно, придется пройти через man, чтобы выяснить, какую версию какого Unix был введен метод, или если это конкретное расширение, и решить для себя, приемлема ли эта историческая начальная точка для вас. Но это правда, если вы написали программу на C вместо C ++.

Заголовки псевдонимов C ++ включают большинство, но не все функциональные возможности заголовков C, но иногда вы можете найти единственный способ получить функцию - включить заголовок C напрямую. С другой стороны, вам нужно спросить себя, почему они решили не включать этот метод, обычно потому, что он устарел, опасен или нестандартен.

Таким образом, все работает так, что функции C, включая функции библиотеки C, вводятся с ключевым словом extern "C".

Когда вы #include заголовочные файлы C, они обычно содержат некоторый код, такой как:

/* C++ needs to know that types and declarations are C, not C++.  */
#ifdef  __cplusplus
# define __BEGIN_DECLS  extern "C" {
# define __END_DECLS    }
#else
# define __BEGIN_DECLS
# define __END_DECLS
#endif

__BEGIN_DECLS

... который представляет раздел функций интерфейса C.

Если вам нужно было включить действительно старую библиотеку C, которая этого не делала, вы можете легко добавить extern "C" вокруг #include:

extern "C" {
#include "ancientinterface.h"
};

Вы также можете написать свои собственные методы, которые Интерфейс "C" совместим.

5
задан Cade Roux 23 January 2009 в 20:28
поделиться

4 ответа

Это звучит мне как один из Ваших DLLs, неверная версия. Была какая-то проблема с перемещением от SQL2000 до SQL2005, который создатели PHP не разрешили сами. Существует множество сообщений об этом здесь: следующая ссылка

Я полагаю, что DLL является ntwdblib.dll, и версия должна быть версией 2000.80.194.0 по крайней мере. При выполнении Apache или WampServer существует идентичный dll, где Apache DLLs хранится что потребности, которые будут перезаписаны.

Примечание: Я имел эту проблему несколько дней назад и находил корректный DLLs и перезаписывал, оба позволили этому работать.

Также: Вы, возможно, должны установить удаленные соединения. SQL-серверу 2005 отключили удаленные соединения по умолчанию. Можно позволить удаленные соединения путем выполнения Средства конфигурирования Площади поверхности SQL.

5
ответ дан 13 December 2019 в 22:18
поделиться

Попытайтесь звонить mssql_get_last_message() получить последнее сообщение об ошибке:

$dbhandle = mssql_connect($myServer, $myUser, $myPass)
  or die("Couldn't connect to SQL Server on $myServer. Error: " . mssql_get_last_message());
4
ответ дан 13 December 2019 в 22:18
поделиться

Недопустимые учетные данные, если Ваш не использование localhost быть уверенными Вы добавляете IP сервера к безопасному списку.

0
ответ дан 13 December 2019 в 22:18
поделиться

I had some difficulties with this a few months ago, and I found that the only way to make it work was to include the instance name when specifying the server. For example:

$myServer = "SERVER\INSTANCENAME";

Specifying just the server would not work, even with TCP/IP enabled.

0
ответ дан 13 December 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: