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

Я уже давно использую PHP & MySQL и собираюсь начать использовать PostgreSQL вместо него.

Какой метод предпочтительнее?

Это через объекты PDO или есть что-то лучшее?

Решение

Объекты PDO - это новое веяние. Я бы рекомендовал это, если вы можете гарантировать, что на вашей целевой платформе всегда будет работать PHP 5.2+.

Существует множество других уровней абстракции баз данных, которые поддерживают PostgreSQL и совместимы со старыми версиями PHP; я'рекомендую ADODB.

Вам действительно следует использовать PDO или другой уровень абстракции даже для работы с MySQL; таким образом, вы больше не столкнетесь с этой проблемой!

Комментарии (0)

Используя пехлеви Db:

require_once 'Zend/Db.php';
$DB_ADAPTER = 'Pdo_Pgsql';
$DB_CONFIG = array(
    'username' => 'app_db_user',
    'password' => 'xxxxxxxxx',
    'host'     => 'localhost',
    'port'     => 5432,
    'dbname'   => 'mydb'
);
$db = Zend_Db::factory($DB_ADAPTER, $DB_CONFIG);
Комментарии (0)

Лично я использую PDO для работы с базами данных, когда у меня есть выбор. Подготовленные операторы облегчают мне жизнь, и он легко переходит от одной системы баз данных к другой - удобно, если вам приходится работать с той, к которой вы не привыкли.

Если вы хотите создать свою собственную абстракцию или перейти к процедурной модели, вот функции Postgre: http://ca.php.net/manual/en/ref.pgsql.php.

Комментарии (0)

Есть также функции pg_whatever, но don' t используют их.

Они используют несохраняемых водителей базы данных старшего возраста. PDO - способ пойти.

Комментарии (0)

Я бы также предложил создать наследуемый класс PDO или класс-обертку, если вы решите не использовать PDO. Это обеспечит вам гораздо большую гибкость в будущем. Например, вычисление времени выполнения запроса.

Комментарии (0)

В зависимости от масштаба Вашего заявления Вы могли бы хотеть рассмотреть количество связей, идущих в бэкенд. Согласие, кажется, что постоянные связи PHP и PostgreSQL don' t работают хорошо вместе, таким образом, что-то как [pgpool-||] [1] должно использоваться в качестве посредника.

[1]: http://pgpool.projects.postgresql.org/" pgpool-II"

Комментарии (0)