2010-09-03 4 views
3

Итак, на моем тестовом компьютере у меня был PHP с Apache, и у меня был PHP SQL Driver (а не Microsoft один). Итак, я использовал mssql_connect() и такие команды для работы с базой данных.Microsoft PHP SQL Driver vs PHP SQL Driver

Когда я перешел на другой сервер, у него есть Microsoft PHP SQL Driver. Теперь он сбой и показывает ошибку ошибки PHP_via_FastCGI, когда я выполняю mssql_connect() и другие команды mssql_ php.

Не могли бы вы посоветовать, как это решить? Нужно ли мне менять код на что-то еще? Если это так, у меня есть сотни файлов, мне нужно изменить их в каждом?

Спасибо.

+0

Вот почему вы должны ** всегда использовать библиотеку абстракции базы данных **. – shamittomar

+0

@shamittomar, библиотеки абстракции базы данных решают ряд проблем, но не этот конкретный: какую бы библиотеку вы ни выбрали, вам все равно нужно ее установить. –

+0

@ Álvaro G. Vicario, но если бы был слой абстракции, вам просто нужно добавить поддержку на уровне абстракции для драйвера Microsoft. без и абстракции, OP необходимо будет касаться каждого фрагмента кода, который имеет дело с БД, либо преобразования вызовов в формат Microsoft, либо путем реализации уровня абстракции. –

ответ

1

Вам нужно будет карта (изменить) все БД вызывает в приложении к функциям эквив драйвер Microsoft или создать слой абстракции. Уровень абстракции, где вы делаете свою собственную БД функции, такой как: myConnect(...) myEXEC(...)

и в том, что у вас есть код

if ($givenDriver=='M') { 
    code using microsoft DB function 
} elseif ($givenDriver=='P') { 
    code using the PHP DB function 
} else { 
    error unknown connection type 
} 

то везде в коде преобразование из фактического PHP команд драйвера для вашей абстракции . Тогда код может легко переключаться между использованием одного драйвера, изменяя значение $givenDriver.

+0

PDO - довольно хороший уровень абстракции базы данных, и он поставляется с PHP. Это может быть хорошей идеей для johnshaddad, чтобы построить свой уровень преобразования mssql поверх этого, на случай, если ему когда-либо понадобится снова переключиться на другой драйвер базы данных. – James

+0

Обратите внимание, что драйвер PDO для SQL Server помечен как ** экспериментальный ** и фактически удален из последних выпусков PHP. Переписывание на основе PDO должно использовать ODBC или драйвер Microsoft. –

1

Эти два драйвера не имеют ничего общего (кроме возможности взаимодействия с SQL Server). Они имеют разные имена функций и функциональные возможности. Ваша программа требует PHP SQL Driver и не будет запускаться с Microsoft, если вы не полностью перепишете ее.

(Безотносительно, библиотека Microsoft очень хорошо.)

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