PostgreSQL - Интерфейс PHP
Установка
Расширение PostgreSQL по умолчанию доступно в последней версии PHP 5.3.x. Его можно отключить, используя --without-pgsql во время компиляции. Тем не менее, Вы можете использовать команду yum для установки интерфейса PHP-PostgreSQL:
yum install php-pgsql
Перед началом использования интерфейса PHP найдите файл pg_hba.conf file в каталоге установки 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
Ниже приводим таблицу, описывающую важные команды для работы с базами данных PostgreSQL в Вашей программе PHP. Если Вас интересует более прогрессивное приложение, ознакомьтесь с официальной документацией PHP.
|
S. No. |
API и Описание |
|
1 |
resource pg_connect ( string $connection_string [, int $connect_type ] ) Открывает соединение к базе данных PostgreSQL, определенное строкой connection_string. При повторном вызове функции pg_connect() с теми же значениями параметров в connection_string функция вернет существующее подключение. Чтобы принудительно создать новое соединение, необходимо передать строку подключения функции PGSQL_CONNECT_FORCE_NEW в качестве параметра connect_type. |
|
2 |
bool pg_connection_reset ( resource $connection ) Сбрасывает подключение. Может быть использовано для устранения ошибок. Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. |
|
3 |
int pg_connection_status ( resource $connection ) Определяет состояние подключения. Возвращает PGSQL_CONNECTION_OK или PGSQL_CONNECTION_BAD. |
|
4 |
string pg_dbname ([ resource $connection ] ) Возвращает имя базы данных, соответствующей ресурсу PostgreSQL connection. |
|
5 |
resource pg_prepare ([ resource $connection ], string $stmtname, string $query ) Посылает запрос на создание параметризованного SQL выражения и ждет его завершения. |
|
6 |
resource pg_execute ([ resource $connection ], string $stmtname, array $params ) Запускает выполнение ранее подготовленного параметризованного запроса и ждет результат. |
|
7 |
resource pg_query ([ resource $connection ], string $query ) Выполняет запрос. |
|
8 |
array pg_fetch_row ( resource $result [, int $row ] ) Выбирает строку результата запроса и помещает данные в массив. |
|
9 |
array pg_fetch_all ( resource $result ) Возвращает массив, содержащий все записи из результата запроса. |
|
10 |
int pg_affected_rows ( resource $result ) Возвращает количество рядов, затронутых запросами INSERT, UPDATE, и DELETE. |
|
11 |
int pg_num_rows ( resource $result ) Возвращает количество строк в выборке. |
|
12 |
bool pg_close ([ resource $connection ] ) Закрывает соединение с базой данных PostgreSQL. |
|
13 |
string pg_last_error ([ resource $connection ] ) Возвращает сообщение о последней ошибке на заданном соединении. |
Подключение к базе данных
Следующий код 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);
?>
Как только вышеописанная программа будет выполнена, в Вашей базе данных testdb появится таблица COMPANY, и Вы увидите следующие уведомления:
Opened database successfully Table created successfully
Операция INSERT
Следующая программа 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
Операция SELECT
Следующая программа 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
Операция UPDATE
Следующий код 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
Операция DELETE
Следующий код 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);
?>
Результат выполнения программы, описанной выше:
Opened database successfully Record deleted successfully 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



