Расширение 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);
?>