Я использовал PHP & MySQL целую вечность, и собираюсь начать использовать PostgreSQL вместо этого.
Каков предпочтительный метод?
Это через объекты PDO или является там чем-то лучше?
Объекты PDO являются новой жаркостью. Я рекомендовал бы, что, пока можно удостовериться, что целевая платформа будет всегда выполнять PHP 5.2 +.
Существует много других уровней абстракции базы данных, которые поддерживают PostgreSQL, которые совместимы с более старыми версиями PHP; я рекомендовал бы ADODB.
Необходимо действительно использовать PDO или другой уровень абстракции даже для работы MySQL; тем путем у Вас не будет этой проблемы снова!
Я, лично, использую PDO для всей своей работы базы данных, когда у меня есть выбор. Подготовленные операторы делают мою жизнь легкой, и это является бесшовным между системами баз данных - удобный, если необходимо работать с одним, Вы не привыкли к.
Если Вы хотите к абстракции самокрутки или идете с процедурной моделью, вот функции Postgre: http://ca.php.net/manual/en/ref.pgsql.php
Использование дб зенда:
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);
Я также предложил бы создать наследованный класс PDO или класс обертки, если Вы решаете не использовать PDO. Это предоставило бы Вам намного больше гибкости в будущем. т.е. Вычисление времени выполнения запросов.
Существуют также функции pg_whatever, но не используют их.
Они используют более старые, несохраняемые драйверы базы данных. PDO является способом пойти.
В зависимости от масштаба Вашего приложения Вы могли бы хотеть рассмотреть количество соединений, идущих в бэкенд. Согласие, кажется, что постоянные соединения PHP и PostgreSQL не работают хорошо вместе, таким образом, что-то как pgpool-|| должно использоваться в качестве посредника.