Расширение PostgreSQL включено по умолчанию в последних версиях PHP 5.3.x. Это можно отключить, используя —without-pgsql во время компиляции. Тем не менее, вы можете использовать команду yum для установки PHP-интерфейса PostgreSQL —
yum install php-pgsql
Прежде чем вы начнете использовать интерфейс PHP PostgreSQL, найдите файл pg_hba.conf в вашем установочном каталоге PostgreSQL и добавьте следующую строку:
# IPv4 local connections: host all all 127.0.0.1/32 md5
Вы можете запустить / перезапустить сервер postgres, если он не работает, с помощью следующей команды —
[root@host]# service postgresql restart Stopping postgresql service: [ OK ] Starting postgresql service: [ OK ]
Пользователи Windows должны включить php_pgsql.dll, чтобы использовать это расширение. Эта DLL включена в дистрибутивы Windows в последних версиях PHP 5.3.x
Для получения подробных инструкций по установке, пожалуйста, просмотрите наш учебник по PHP и его официальный сайт.
API интерфейса PHP
Ниже приведены важные процедуры PHP, которые могут удовлетворить ваши требования для работы с базой данных PostgreSQL из вашей программы PHP. Если вы ищете более сложное приложение, вы можете заглянуть в официальную документацию PHP.
С. Нет. | API и описание |
---|---|
1 |
ресурс pg_connect (строка $ connection_string [, int $ connect_type]) Это открывает соединение с базой данных PostgreSQL, указанной в параметре connection_string. Если PGSQL_CONNECT_FORCE_NEW передается как connect_type, то создается новое соединение в случае второго вызова pg_connect (), даже если строка_соединения идентична существующему соединению. |
2 |
bool pg_connection_reset (ресурс $ соединение) Эта процедура сбрасывает соединение. Это полезно для восстановления после ошибок. Возвращает TRUE в случае успеха или FALSE в случае неудачи. |
3 |
int pg_connection_status (ресурс $ connection) Эта процедура возвращает состояние указанного соединения. Возвращает PGSQL_CONNECTION_OK или PGSQL_CONNECTION_BAD. |
4 |
строка pg_dbname ([ресурс $ соединение]) Эта подпрограмма возвращает имя базы данных, к которой относится данный ресурс соединения PostgreSQL. |
5 |
ресурс pg_prepare ([ресурс $ соединение], строка $ stmtname, строка $ запрос) Это отправляет запрос на создание подготовленного оператора с заданными параметрами и ожидает завершения. |
6 |
ресурс pg_execute ([ресурс $ connection], строка $ stmtname, массив $ params) Эта подпрограмма отправляет запрос на выполнение подготовленного оператора с заданными параметрами и ожидает результата. |
7 |
ресурс pg_query ([ресурс $ соединение], строка $ запрос) Эта подпрограмма выполняет запрос для указанного соединения с базой данных. |
8 |
массив pg_fetch_row (ресурс $ result [, int $ row]) Эта процедура извлекает одну строку данных из результата, связанного с указанным ресурсом результата. |
9 |
массив pg_fetch_all (ресурс $ результат) Эта подпрограмма возвращает массив, содержащий все строки (записи) в результирующем ресурсе. |
10 |
int pg_affered_rows (ресурс $ результат) Эта подпрограмма возвращает количество строк, затронутых запросами INSERT, UPDATE и DELETE. |
11 |
int pg_num_rows (ресурс $ результат) Эта подпрограмма возвращает количество строк в результирующем ресурсе PostgreSQL, например, количество строк, возвращаемых оператором SELECT. |
12 |
bool pg_close ([ресурс $ соединение]) Эта процедура закрывает непостоянное соединение с базой данных PostgreSQL, связанной с данным ресурсом соединения. |
13 |
строка pg_last_error ([ресурс $ соединение]) Эта процедура возвращает последнее сообщение об ошибке для данного соединения. |
14 |
строка pg_escape_literal ([ресурс $ соединение], строка $ данные) Эта подпрограмма экранирует литерал для вставки в текстовое поле. |
15 |
строка pg_escape_string ([ресурс $ соединение], строка $ данные) Эта подпрограмма экранирует строку для запроса к базе данных. |
ресурс pg_connect (строка $ connection_string [, int $ connect_type])
Это открывает соединение с базой данных PostgreSQL, указанной в параметре connection_string.
Если PGSQL_CONNECT_FORCE_NEW передается как connect_type, то создается новое соединение в случае второго вызова pg_connect (), даже если строка_соединения идентична существующему соединению.
bool pg_connection_reset (ресурс $ соединение)
Эта процедура сбрасывает соединение. Это полезно для восстановления после ошибок. Возвращает TRUE в случае успеха или FALSE в случае неудачи.
int pg_connection_status (ресурс $ connection)
Эта процедура возвращает состояние указанного соединения. Возвращает PGSQL_CONNECTION_OK или PGSQL_CONNECTION_BAD.
строка pg_dbname ([ресурс $ соединение])
Эта подпрограмма возвращает имя базы данных, к которой относится данный ресурс соединения PostgreSQL.
ресурс pg_prepare ([ресурс $ соединение], строка $ stmtname, строка $ запрос)
Это отправляет запрос на создание подготовленного оператора с заданными параметрами и ожидает завершения.
ресурс pg_execute ([ресурс $ connection], строка $ stmtname, массив $ params)
Эта подпрограмма отправляет запрос на выполнение подготовленного оператора с заданными параметрами и ожидает результата.
ресурс pg_query ([ресурс $ соединение], строка $ запрос)
Эта подпрограмма выполняет запрос для указанного соединения с базой данных.
массив pg_fetch_row (ресурс $ result [, int $ row])
Эта процедура извлекает одну строку данных из результата, связанного с указанным ресурсом результата.
массив pg_fetch_all (ресурс $ результат)
Эта подпрограмма возвращает массив, содержащий все строки (записи) в результирующем ресурсе.
int pg_affered_rows (ресурс $ результат)
Эта подпрограмма возвращает количество строк, затронутых запросами INSERT, UPDATE и DELETE.
int pg_num_rows (ресурс $ результат)
Эта подпрограмма возвращает количество строк в результирующем ресурсе PostgreSQL, например, количество строк, возвращаемых оператором SELECT.
bool pg_close ([ресурс $ соединение])
Эта процедура закрывает непостоянное соединение с базой данных PostgreSQL, связанной с данным ресурсом соединения.
строка pg_last_error ([ресурс $ соединение])
Эта процедура возвращает последнее сообщение об ошибке для данного соединения.
строка pg_escape_literal ([ресурс $ соединение], строка $ данные)
Эта подпрограмма экранирует литерал для вставки в текстовое поле.
строка pg_escape_string ([ресурс $ соединение], строка $ данные)
Эта подпрограмма экранирует строку для запроса к базе данных.
Подключение к базе данных
Следующий код PHP показывает, как подключиться к существующей базе данных на локальном компьютере, и, наконец, будет возвращен объект подключения к базе данных.
<?php $host = "host = 127.0.0.1"; $port = "port = 5432"; $dbname = "dbname = testdb"; $credentials = "user = postgres password=pass123"; $db = pg_connect( "$host $port $dbname $credentials" ); if(!$db) { echo "Error : Unable to open database\n"; } else { echo "Opened database successfully\n"; } ?>
Теперь давайте запустим указанную выше программу, чтобы открыть нашу базу данных testdb : если база данных успешно открыта, она выдаст следующее сообщение:
Opened database successfully
Создать таблицу
Следующая программа PHP будет использоваться для создания таблицы в ранее созданной базе данных —
<?php $host = "host = 127.0.0.1"; $port = "port = 5432"; $dbname = "dbname = testdb"; $credentials = "user = postgres password=pass123"; $db = pg_connect( "$host $port $dbname $credentials" ); if(!$db) { echo "Error : Unable to open database\n"; } else { echo "Opened database successfully\n"; } $sql =<<<EOF CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL); EOF; $ret = pg_query($db, $sql); if(!$ret) { echo pg_last_error($db); } else { echo "Table created successfully\n"; } pg_close($db); ?>
Когда приведенная выше программа будет выполнена, она создаст таблицу COMPANY в вашей тестовой базе данных и отобразит следующие сообщения:
Opened database successfully Table created successfully
ВСТАВИТЬ Операция
Следующая программа PHP показывает, как мы можем создавать записи в нашей таблице COMPANY, созданной в приведенном выше примере:
<?php $host = "host=127.0.0.1"; $port = "port=5432"; $dbname = "dbname = testdb"; $credentials = "user = postgres password=pass123"; $db = pg_connect( "$host $port $dbname $credentials" ); if(!$db) { echo "Error : Unable to open database\n"; } else { echo "Opened database successfully\n"; } $sql =<<<EOF INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'Teddy', 23, 'Norway', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 ); EOF; $ret = pg_query($db, $sql); if(!$ret) { echo pg_last_error($db); } else { echo "Records created successfully\n"; } pg_close($db); ?>
Когда указанная выше программа будет выполнена, она создаст указанные записи в таблице COMPANY и отобразит следующие две строки:
Opened database successfully Records created successfully
ВЫБЕРИТЕ Операцию
Следующая программа PHP показывает, как мы можем получать и отображать записи из нашей таблицы COMPANY, созданной в приведенном выше примере.
<?php $host = "host = 127.0.0.1"; $port = "port = 5432"; $dbname = "dbname = testdb"; $credentials = "user = postgres password=pass123"; $db = pg_connect( "$host $port $dbname $credentials" ); if(!$db) { echo "Error : Unable to open database\n"; } else { echo "Opened database successfully\n"; } $sql =<<<EOF SELECT * from COMPANY; EOF; $ret = pg_query($db, $sql); if(!$ret) { echo pg_last_error($db); exit; } while($row = pg_fetch_row($ret)) { echo "ID = ". $row[0] . "\n"; echo "NAME = ". $row[1] ."\n"; echo "ADDRESS = ". $row[2] ."\n"; echo "SALARY = ".$row[4] ."\n\n"; } echo "Operation done successfully\n"; pg_close($db); ?>
Когда приведенная выше программа выполняется, она даст следующий результат. Помните, что поля возвращаются в той последовательности, в которой они использовались при создании таблицы.
Opened database successfully ID = 1 NAME = Paul ADDRESS = California SALARY = 20000 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000 Operation done successfully
ОБНОВЛЕНИЕ Операция
Следующий код PHP показывает, как мы можем использовать оператор UPDATE для обновления любой записи, а затем извлекать и отображать обновленные записи из нашей таблицы COMPANY —
<?php $host = "host=127.0.0.1"; $port = "port=5432"; $dbname = "dbname = testdb"; $credentials = "user = postgres password=pass123"; $db = pg_connect( "$host $port $dbname $credentials" ); if(!$db) { echo "Error : Unable to open database\n"; } else { echo "Opened database successfully\n"; } $sql =<<<EOF UPDATE COMPANY set SALARY = 25000.00 where ID=1; EOF; $ret = pg_query($db, $sql); if(!$ret) { echo pg_last_error($db); exit; } else { echo "Record updated successfully\n"; } $sql =<<<EOF SELECT * from COMPANY; EOF; $ret = pg_query($db, $sql); if(!$ret) { echo pg_last_error($db); exit; } while($row = pg_fetch_row($ret)) { echo "ID = ". $row[0] . "\n"; echo "NAME = ". $row[1] ."\n"; echo "ADDRESS = ". $row[2] ."\n"; echo "SALARY = ".$row[4] ."\n\n"; } echo "Operation done successfully\n"; pg_close($db); ?>
Когда вышеуказанная программа будет выполнена, она даст следующий результат —
Opened database successfully Record updated successfully ID = 2 NAME = Allen ADDRESS = 25 SALARY = 15000 ID = 3 NAME = Teddy ADDRESS = 23 SALARY = 20000 ID = 4 NAME = Mark ADDRESS = 25 SALARY = 65000 ID = 1 NAME = Paul ADDRESS = 32 SALARY = 25000 Operation done successfully
УДАЛЕНИЕ Операция
Следующий код PHP показывает, как мы можем использовать инструкцию DELETE, чтобы удалить любую запись, а затем извлечь и отобразить оставшиеся записи из нашей таблицы COMPANY —
<?php $host = "host = 127.0.0.1"; $port = "port = 5432"; $dbname = "dbname = testdb"; $credentials = "user = postgres password=pass123"; $db = pg_connect( "$host $port $dbname $credentials" ); if(!$db) { echo "Error : Unable to open database\n"; } else { echo "Opened database successfully\n"; } $sql =<<<EOF DELETE from COMPANY where ID=2; EOF; $ret = pg_query($db, $sql); if(!$ret) { echo pg_last_error($db); exit; } else { echo "Record deleted successfully\n"; } $sql =<<<EOF SELECT * from COMPANY; EOF; $ret = pg_query($db, $sql); if(!$ret) { echo pg_last_error($db); exit; } while($row = pg_fetch_row($ret)) { echo "ID = ". $row[0] . "\n"; echo "NAME = ". $row[1] ."\n"; echo "ADDRESS = ". $row[2] ."\n"; echo "SALARY = ".$row[4] ."\n\n"; } echo "Operation done successfully\n"; pg_close($db); ?>
Когда вышеуказанная программа будет выполнена, она даст следующий результат —