Собственно вопрос в заголовке. Имеется в виу что при работе с Oracle используются функции oci8, при работе с MySQL используются функции mysql, т. е. способ получения данных намертво вшит в скрипт. Есть ли какая нибудь возможность не меняя кода скрипта использовать его для работы с разными БД?
PDO Но подход к разным СУБД - разный, так что выигрышь не особый за исключением набора методов, которыми оперируем.
Угу, и если только на уровне PDO, то придётся писать запросы, которые без изменений идут на всех поддерживаемых базах данных, так как ничего "недостающего" PDO не эмулирует и возможностей не добавляет. Это как минимум надо серьёзно разбиратся во "всех" базах данных, SQL стандарте итд. итд.. И про оптимизацию путём формулировки запроса можно забыть. Насколько это реально сделать и выдержать на протяжении большого проэкта - фиг знает. Другой, работающий, вариант - использовать ещё одну "прослойку" поверх. Doctrine например более или менее эмулирует недостающие базовые фишки (тот же злосчастный LIMIT ). Но, это надо разбираться в Doctrine, писать все запросы в специальном диалекте DQL, да и Doctrine сама весит недурно и тормозит итд., ORM фреймворк всё-таки.
2angrybambr Вариант определиться с БД не подходит. Есть несколько разных баз которые по своей логике работают как одна. 2Apple и 2Einbaukueche Спасибо за совет, в принципе как раз и требовалось абстрагироваться на уровне функций, что бы они были одинаковыми для MySQL, Oracle и т. д. В этом случае при переходе на другую базу изменения в коде будут на два порядка меньше и проще. Если не сложно посоветуйте какой нибудь хороший туториал или книжку по PDO, т. к. для себя выбрал именно его. А вообще нашел статью со сравнениями разных классов абстракции от БД http://codeshit.com/post397 , надеюсь кому нибудь поможет.
Глупости это. Основные изменения будут связаны с самими запросами. Синтаксис которых у разных БД отличается. Поэтому только ORM, а PDO тут и рядом не стоял.
Понимаю что тотально абстрагироваться не получится, но это все же лучше чем ничего. К тому же все запросы достаточно простые, аля SELECT. Ну а всетаки киньте пожалуйста ссылочку на хорошую документацию по PDO.
Само понятие ORM тут вообще ни при чём, нужна абстракция языка запросов. Например тот же Doctrine Query Language из Doctrine. SELECT это вообще, пожалуй, запрос с самым больших количеством опций. Понимаете, вам правильно сказали на этот счёт. Даже самые на первый взгляд элементарные запросы нельзя будет использовать 1:1 на всех базах данных, поддерживаемых PDO. И это даже не вопрос разных типов данных итд.. Такие банальные и по привычке для MySQL набросанные вещи как Не являются "кроссплатформенным" SQL. Погуглите, сколько людей ищут тот же LIMIT на Оракле, или ROWNUM на MySQL. Ибо кажется просто, и "везде должно быть", а там раз и облом На php.net сходить достаточно, имхо. Там читать-то не так много, за рабочий день можно всё осилить и весь фунционал перепробовать. Те моменты, которые в документации не так ясны, разжёванны в комментах. http://php.net/manual/en/book.pdo.html
Подключаться к БД с помощью ODBC php-ный скрипт писать под ODBC соедиение. Изврат конечно, но решает проблему работы с разными базами.
Всем спасибо за советы, если кому понадобится, нашел книжку(правдо только в печатном виде), называется PHP и MySQL: создание интернет-магазина, 2-е издание Кристиан Дари, Эмилиан Баланеску. В ней описана работа с PDO + Smarty(позволяет разделить дизайн и код приложения) + ООП + трехуровнивая модель разработки, на примере создания интернет магазина. В принципе получил больше чем заказывал, на этом тему считаю ЗАКРЫТОЙ.