Я пишу новое приложение на PHP, которое будет опубликовано как коммерческое приложение. До этого момента я работал с базами данных MySQL в PHP.
Конечный пользователь отвечает за обеспечение функциональности базы данных, а приложение PHP просто подключается к нему и использует его.
Мой вопрос в том, что, поскольку я не знаю, какую базу данных будет использовать пользователь, как я могу поддерживать это в PHP?
У меня есть вопросы:
Является ли ODBC правильным путем? Я ссылаюсь на ODBC ниже, но если ODBC не является правильным методом для использования, те же вопросы относятся к любому предлагаемому методу.
Потеряю ли я какую-либо функциональность/функции, используя функции ODBC по сравнению с эквивалентами MySQL в PHP?
Есть ли что-то, связанное с безопасностью, о котором мне нужно помнить? Например, я использовал mysql_real_escape_string() в предыдущих приложениях. Что такое эквивалент ODBC (он вообще нужен?)
Я предполагаю, что PHP может подключаться к базе данных MySQL с помощью ODBC? Нужно ли каким-то образом настроить MySQL, чтобы разрешить это?
С точки зрения производительности, приемлем ли ODBC?
Ответ 1 · рейтинг 1 · Robbie
Для поддержки и производительности лучшим вариантом, вероятно, будет PDO (объект базы данных PHP). Это ядро PHP, которое поддерживает все основные системы баз данных, изначально обрабатывает экранирующие строки и так далее.
Чтобы оставаться агностиком, вы не можете использовать только вещи MySQL, например. LIMIT add, который поддерживается не всеми базами данных SQL.
Но, как говорится, сначала проверьте. Если клиент имеет базу данных noSQL или использует Amazon с уникальными строками подключения (например), у вас проблемы.
Ответ 2 · рейтинг 1 · Jharwood
Вот ссылка на использование абстракции базы данных в PHP.
Цель библиотеки абстракции базы данных - обеспечить единообразие при взаимодействии с несколькими серверами баз данных. Подумайте об этом таким образом, чтобы ваше приложение поддерживало несколько баз данных, ему потребуются разные строки кода для выполнения одних и тех же функций в каждой из них. С библиотекой абстракций приложению требуется только один набор кода для связи с любой базой данных, поддерживаемой библиотекой. Это резко увеличивает количество вариантов сервера базы данных, доступных для вашего PHP-приложения.
http://www.hosting.com/support/programming/using-adodb-to-build-a-database-agnostic-php-application
Ответ 3 · рейтинг 1 · Ja͢ck
Я бы, вероятно, стандартизировал PDO; он абстрагирует большое количество баз данных и предоставляет унифицированный интерфейс, он написан на C, и у большинства людей он установлен по умолчанию.
Слово предостережения здесь; не все базы данных поддерживают одну и ту же грамматику SQL, поэтому вам, возможно, придется предусмотреть и это. Это сложно, но один из способов - определить вспомогательный класс между PDO и вашими классами; этот вспомогательный класс будет преобразовывать вызовы бизнес-логики в фактический SQL. Вы могли бы предоставить один, который работает для MySQL, и позволить вашим пользователям создавать другие? :)