Php включить поддержку postgresql


Table of Contents

User Contributed Notes 5 notes

This happened to me also with PHP 5.4.1
Copying the offending DLL everywhere didn’t worket, and I don’t have Postgres installed in the server, but also planned to use PHP against different Postgres versions, so the only solution I found that worked was to put in httpd.conf a line like this:

LoadFile «C:/Program Files/PostgreSQL/8.4/bin/libpq.dll»

but refering to the libpq.dll that comes bundled with PHP, like this:

After that it worked fine to me.

If you get a message like this:
«Php Startup: Unable to load dynamic library ‘C:\php\ext\php_pgsql.dll»

1. In the Configuration File alter the order of the libraries «php_exif.dll» and «php_mbstring.dll», in such a way that is called first the library «php_mbstring.dll»

2. Copy all the libraries in the folder «bin» of your installation of PostgreSQL and paste them into the root folder of Windows

3. Uncomment the line «extension=php_pgsql.dll»
4. Now you should see on the page generated by «phpinfo()» section of PostgreSQL

Unable to load dynamic library ‘C:\\php\\ext\\php_pgsql.dll’ — The specified module could not be found.

copy libpq.dll/all files from zip (if you have php from installer)

add to httpd.conf:

PHPIniDir «c:/PHP/»
Loadfile «C:\php\php5ts.dll»
Loadfile «C:\php\libpq.dll»
LoadModule php5_module «c:/PHP/php5apache2_2.dll»
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .phps

(in php.ini default: extension_dir =»c:\PHP\ext» )

if it doesn’t work add c:\php (php path) to your windows path (and restart)

tested on php5.2.8 + apache2.2.3

If you get this error on Windows:

Unable to load dynamic library ‘C:/php/ext\\php_pgsql.dll’ — The specified module could not be found.

Try downloading the PostgreSQL binaries-no-install archive from (replace 8.3.5 with the latest stable version) and copy these DLLs to C:/WINDOWS/system32/ :

Another windows xp solution for «Unable to load dynamic library ‘php_pgsql.dll’ — The specified module could not be found.»

Add the path of the postgres binaries to the system search-path:

Right click on «My Computer», select «properties», «advanced»-tab, «Environment variables»-button, «System variables»-section, select «path» and click «Edit» and add the path to the postgres binaries at the end, in my case it was «C:\Program Files\PostgreSQL\8.4\bin» and then restart the computer (or at least restart the apache/php processes)

Please note that the system-path can have several values, each separated by a semicolon «;».


Connecting to PostgreSQL

Summary: in this tutorial, you will learn how to connect to a PostgreSQL database server using PHP PDO.


To make a connection to the PostgreSQL database server using PHP PDO, you need to have:

  • A PostgreSQL database server, a database, and an account with a username and password that can access the database.
  • PHP PDO PostgreSQL driver enabled in the php.ini file.

1) PostgreSQL database parameters

Suppose you have the following PostgreSQL database parameters:

  • A PostgreSQL database server on the localhost .
  • The dvdrental sample database.
  • The account with the user postgres and password postgres that can access the dvdrental database on the local database server

The following creates a new database configuration file named config.php that stores the PostgreSQL database parameters:

To use these parameters, you include the config.php file in the script that connects to the PostgreSQL using the require construct.

2) Enable PostgreSQL driver

The PDO_PGSQL is a driver that implements the PDO interface. It allows you to access PostgreSQL databases from PHP.

Читайте также:  Как установить wordpress на линукс

To check if the PDO_PGSQL driver is enabled, you open the php.ini file. Typically, the php.ini file is located under the php directory. For example, if you use XAMPP on Windows, you can find the php.ini file under the C:\xampp\php directory.

in the php.ini file, you can find the following line:

If you see the comma( ; ) placed at the beginning of the line, it means that the line is commented and the database driver is not enabled.

To enable the driver, you need to uncomment the line by removing the comma ( ; ) like this:

After that, you need to restart the web server to apply the change.

PostgreSQL data source name

The data source name or DSN holds database parameters that enable access to a database system. The data source name of the PostgreSQL consists of the following parameters:

  • pgsql: is the DNS prefix.
  • host: the host of the server where the PostgreSQL runs.
  • port: the port to which PostgreSQL listens. The default PostgreSQL’s port is 5432 .
  • dbname: the database name that you want to connect to.
  • And other parameters.

The following shows a DSN that connects to dvdrental database in the local PostgreSQL Server, port 5432:

Connecting to PostgreSQL

The following illustrates how to connect to the dvdrental database in PostgreSQL database server:

How the script works.

  • First, make a new connection to the PostgreSQL database by creating a new instance of the PDO class.
  • Second, show a message if the database connection is established successfully; otherwise, show an error message.

The following option instruct PDO to set an error code and throw an exception if an error occurs:

PDO has three exception handling options:

  • PDO::ERROR_SILENT – PDO sets an error code for inspecting using the PDO::errorCode() and PDO::errorInfo() methods. The PDO::ERROR_SILENT is the default mode.
  • PDO::ERRMODE_WARNING – Besides setting the error code, PDO will issue an E_WARNING message.
  • PDO::ERRMODE_EXCEPTION – Besides setting the error code, PDO will raise a PDOException .

Note that PHP automatically closes the database connection when the script ends. If you want to close the database connection explicitly, you can set the PDO instance to null:



(PHP 4, PHP 5, PHP 7, PHP 8)

pg_connect — Открывает соединение с базой данных PostgreSQL


pg_connect() открывает соединение с базой данных PostgreSQL, определённое строкой connection_string .

При повторном вызове функции pg_connect() с теми же значениями параметров в connection_string функция вернёт существующее подключение. Чтобы принудительно создать новое соединение, необходимо передать строку подключения функции PGSQL_CONNECT_FORCE_NEW в качестве параметра flags .

Прежний синтаксис с множеством параметров $conn = pg_connect(«host», «port», «options», «tty», «dbname») считается устаревшим.

Список параметров

Строка connection_string может быть пустой строкой или содержать несколько параметров, разделённых пробелами. Каждый параметр указывается как keyword = value . Пробелы вокруг знака «равно» необязательны. Пустые строки в качестве значения или значения, содержащие пробелы отделяются одинарными кавычками, как например, keyword = ‘a value’ . Для записи одинарных кавычек и обратных слешей в качестве значений, их необходимо экранировать обратным слешем, то есть \’ и \\.

Список основных ключевых слов: host , hostaddr , port , dbname (значение по умолчанию для параметра user ), user , password , connect_timeout , options , tty (игнорируется), sslmode , requiressl (устарело в связи с использованием параметра sslmode ), и service . Какие из этих аргументов будут обработаны, зависит от версии PostgreSQL.

Параметр options служит для установки параметров командной строки, которые обработаны сервером.

Если в функцию передана константа PGSQL_CONNECT_FORCE_NEW , будет создаваться новое подключение, даже если connection_string идентична строке существующего подключения.

Если передана константа PGSQL_CONNECT_ASYNC , то соединение устанавливается асинхронным. Состояние соединения можно проверить с помощью функций pg_connect_poll() или pg_connection_status() .

Возвращаемые значения

Возвращает экземпляр PgSql\Connection в случае успешного выполнения или false в случае возникновения ошибки.


PHP 5.4.39 в связке с PostgreSQL – настройка подключения и описание основных функций

В материале мы рассмотрим возможность взаимодействия языка программирования PHP версии 5.4.39 с СУБД PostgreSQL 9.1.13, мы научимся связывать PHP и PostgreSQL, узнаем, какие есть функции PHP для работы с PostgreSQL, а также разберем несколько примеров использования этих функций.

Читайте также:  Как создать подключение к серверу postgresql

Для тех, кто увлекается web-программированием и в частности программированием на PHP не секрет что самой распространенной связкой языка и СУБД является связка PHP и MySQL, но иногда возникает необходимость взаимодействовать и с другими базами, например с PostgreSQL. Кстати, PHP поддерживает работу не только с MySQL и PostgreSQL, но еще и со многими другими СУБД, об этом мы говорили в материале PHP и базы данных. А сегодня мы подробней остановимся именно на работе с PostgreSQL, и начнем мы, конечно же, с вопроса как настроить взаимодействие PHP и PostgreSQL.

Примечание! В качестве операционной системы у нас будет выступать Windows 7, в качестве web-сервера Apache 2.2.2, версия PHP 5.4.39, версия PostgreSQL 9.1.13.

Настройка подключения PHP и PostgreSQL

Первое что нужно сделать, это убедиться, что в каталоге с PHP присутствует библиотека libpq.dll. Затем в файле php.ini найди строку, отвечающую за подключение модуля PostgreSQL и раскомментировать ее, а именно

Перезапускаем Apache и запускаем phpinfo(), и если Вы найдете блок pgsql, то все, библиотеку PostgreSQL Вы подключили.

Если у Вас нет данного раздела, то попробуйте скопировать libpq.dll из каталога PostgreSQL (по умолчанию C:\Program Files\PostgreSQL и так далее) в каталог с PHP с заменой старого, и перезапустите Apache еще раз.

Основные функции PHP для работы с PostgreSQL

pg_connect – открывает соединение с базой данных, возвращает указатель соединения.

pg_query – выполняет запрос к базе данных, возвращает результат запроса.

pg_fetch_assoc – преобразовывает результат запроса в ассоциативный массив.

pg_close – закрывает соединение с базой данных.

Пример работы перечисленных функций

В данном случае мы подключаемся к серверу, который расположен локально, по порту 5432, к базе testbase под пользователем admin с паролем 12345 и выполняем запрос (просто статические данные) к базе данных, затем мы преобразовываем результат в ассоциативный массив, выводим на экран и закрываем соединение.

pg_num_rows – возвращает количество строк в наборе данных, который вернул нам запрос.

pg_num_fields — возвращает количество полей в наборе данных, который вернул нам запрос.

pg_fetch_result – возвращает одно значение из результата запроса.

pg_fetch_row — преобразовывает результат запроса в массив.

pg_fetch_object – преобразовывает результат запроса в объект.

pg_field_name – возвращает название поля по его номеру.

pg_field_num – возвращает номер поля по его названию.

pg_version – возвращает сведения о протоколе взаимодействия, версии клиента и версии сервера в виде массива.

pg_escape_string – экранирует спецсимволы в строке.

pg_dbname – возвращает название базы данных.

pg_affected_rows – возвращает количество затронутых строк при update, insert и delete.

На этом я предлагаю заканчивать, так как для основ этого достаточно, описание всех функций Вы можете найти на сайте PHP вот здесь, ну все, пока!


PostgreSQL — PHP Interface

Introduction To PostgreSQL Databases With PgAdmin For Beginners

23 Lectures 1.5 hours

Google BigQuery & PostgreSQL : Big Query for Data Analysis

126 Lectures 10.5 hours

PostgreSQL, PGadmin, SQL Tutorial + Mini Project!

35 Lectures 5 hours


The PostgreSQL extension is enabled by default in the latest releases of PHP 5.3.x. It is possible to disable it by using —without-pgsql at compile time. Still you can use yum command to install PHP -PostgreSQL interface −

Before you start using the PHP PostgreSQL interface, find the pg_hba.conf file in your PostgreSQL installation directory and add the following line −

You can start/restart the postgres server, in case it is not running, using the following command −

Windows users must enable php_pgsql.dll in order to use this extension. This DLL is included with Windows distributions in the latest releases of PHP 5.3.x

For detailed installation instructions, kindly check our PHP tutorial and its official website.

PHP Interface APIs

The following are important PHP routines, which can suffice your requirement to work with PostgreSQL database from your PHP program. If you are looking for a more sophisticated application, then you can look into the PHP official documentation.

Читайте также:  Как сделать сервер для linux

resource pg_connect ( string $connection_string [, int $connect_type ] )

This opens a connection to a PostgreSQL database specified by the connection_string.

If PGSQL_CONNECT_FORCE_NEW is passed as connect_type, then a new connection is created in case of a second call to pg_connect(), even if the connection_string is identical to an existing connection.

bool pg_connection_reset ( resource $connection )

This routine resets the connection. It is useful for error recovery. Returns TRUE on success or FALSE on failure.

int pg_connection_status ( resource $connection )

This routine returns the status of the specified connection. Returns PGSQL_CONNECTION_OK or PGSQL_CONNECTION_BAD.

string pg_dbname ([ resource $connection ] )

This routine returns the name of the database that the given PostgreSQL connection resource.

resource pg_prepare ([ resource $connection ], string $stmtname, string $query )

This submits a request to create a prepared statement with the given parameters and waits for completion.

resource pg_execute ([ resource $connection ], string $stmtname, array $params )

This routine sends a request to execute a prepared statement with given parameters and waits for the result.

resource pg_query ([ resource $connection ], string $query )

This routine executes the query on the specified database connection.

array pg_fetch_row ( resource $result [, int $row ] )

This routine fetches one row of data from the result associated with the specified result resource.

array pg_fetch_all ( resource $result )

This routine returns an array that contains all rows (records) in the result resource.

int pg_affected_rows ( resource $result )

This routine returns the number of rows affected by INSERT, UPDATE, and DELETE queries.

int pg_num_rows ( resource $result )

This routine returns the number of rows in a PostgreSQL result resource for example number of rows returned by SELECT statement.

bool pg_close ([ resource $connection ] )

This routine closes the non-persistent connection to a PostgreSQL database associated with the given connection resource.

string pg_last_error ([ resource $connection ] )

This routine returns the last error message for a given connection.

string pg_escape_literal ([ resource $connection ], string $data )

This routine escapes a literal for insertion into a text field.

string pg_escape_string ([ resource $connection ], string $data )

This routine escapes a string for querying the database.

Connecting to Database

The following PHP code shows how to connect to an existing database on a local machine and finally a database connection object will be returned.

Now, let us run the above given program to open our database testdb: if the database is successfully opened, then it will give the following message −

Create a Table

The following PHP program will be used to create a table in a previously created database −

When the above given program is executed, it will create COMPANY table in your testdb and it will display the following messages −

INSERT Operation

The following PHP program shows how we can create records in our COMPANY table created in above example −

When the above given program is executed, it will create the given records in COMPANY table and will display the following two lines −

SELECT Operation

The following PHP program shows how we can fetch and display records from our COMPANY table created in above example −

When the above given program is executed, it will produce the following result. Keep a note that fields are returned in the sequence they were used while creating table.

UPDATE Operation

The following PHP code shows how we can use the UPDATE statement to update any record and then fetch and display updated records from our COMPANY table −

When the above given program is executed, it will produce the following result −

DELETE Operation

The following PHP code shows how we can use the DELETE statement to delete any record and then fetch and display the remaining records from our COMPANY table −

When the above given program is executed, it will produce the following result −


Поделиться с друзьями
S. No. API & Description