PostgreSQL - Interface PHP
Instalação
A extensão PostgreSQL é habilitada por padrão nas últimas versões do PHP 5.3.x. É possível desativá-lo usando--without-pgsqlem tempo de compilação. Ainda assim, você pode usar o comando yum para instalar a interface PHP-PostgreSQL -
yum install php-pgsql
Antes de começar a usar a interface PHP PostgreSQL, encontre o pg_hba.conf arquivo no diretório de instalação do PostgreSQL e adicione a seguinte linha -
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Você pode iniciar / reiniciar o servidor postgres, caso ele não esteja em execução, usando o seguinte comando -
[root@host]# service postgresql restart
Stopping postgresql service: [ OK ]
Starting postgresql service: [ OK ]
Os usuários do Windows devem habilitar php_pgsql.dll para usar esta extensão. Esta DLL está incluída nas distribuições do Windows nas versões mais recentes do PHP 5.3.x
Para obter instruções de instalação detalhadas, consulte nosso tutorial de PHP e seu site oficial.
APIs de interface PHP
A seguir estão rotinas PHP importantes, que podem ser suficientes para trabalhar com o banco de dados PostgreSQL do seu programa PHP. Se você está procurando um aplicativo mais sofisticado, pode consultar a documentação oficial do PHP.
S. No. | API e descrição |
---|---|
1 | resource pg_connect ( string $connection_string [, int $connect_type ] ) Isso abre uma conexão com um banco de dados PostgreSQL especificado por connection_string. Se PGSQL_CONNECT_FORCE_NEW for passado como connect_type, então uma nova conexão é criada no caso de uma segunda chamada para pg_connect (), mesmo se connection_string for idêntica a uma conexão existente. |
2 | bool pg_connection_reset ( resource $connection ) Esta rotina redefine a conexão. É útil para recuperação de erros. Retorna TRUE em caso de sucesso ou FALSE em caso de falha. |
3 | int pg_connection_status ( resource $connection ) Esta rotina retorna o status da conexão especificada. Retorna PGSQL_CONNECTION_OK ou PGSQL_CONNECTION_BAD. |
4 | string pg_dbname ([ resource $connection ] ) Esta rotina retorna o nome do banco de dados do recurso de conexão PostgreSQL fornecido. |
5 | resource pg_prepare ([ resource $connection ], string $stmtname, string $query ) Isso envia uma solicitação para criar uma instrução preparada com os parâmetros fornecidos e aguarda a conclusão. |
6 | resource pg_execute ([ resource $connection ], string $stmtname, array $params ) Essa rotina envia uma solicitação para executar uma instrução preparada com os parâmetros fornecidos e espera pelo resultado. |
7 | resource pg_query ([ resource $connection ], string $query ) Esta rotina executa a consulta na conexão de banco de dados especificada. |
8 | array pg_fetch_row ( resource $result [, int $row ] ) Esta rotina busca uma linha de dados do resultado associado ao recurso de resultado especificado. |
9 | array pg_fetch_all ( resource $result ) Esta rotina retorna uma matriz que contém todas as linhas (registros) no recurso de resultado. |
10 | int pg_affected_rows ( resource $result ) Esta rotina retorna o número de linhas afetadas pelas consultas INSERT, UPDATE e DELETE. |
11 | int pg_num_rows ( resource $result ) Esta rotina retorna o número de linhas em um recurso de resultado PostgreSQL, por exemplo, o número de linhas retornadas pela instrução SELECT. |
12 | bool pg_close ([ resource $connection ] ) Esta rotina fecha a conexão não persistente com um banco de dados PostgreSQL associado ao recurso de conexão fornecido. |
13 | string pg_last_error ([ resource $connection ] ) Esta rotina retorna a última mensagem de erro para uma determinada conexão. |
14 | string pg_escape_literal ([ resource $connection ], string $data ) Essa rotina escapa de um literal para inserção em um campo de texto. |
15 | string pg_escape_string ([ resource $connection ], string $data ) Essa rotina escapa de uma string para consultar o banco de dados. |
Conectando ao banco de dados
O código PHP a seguir mostra como se conectar a um banco de dados existente em uma máquina local e, finalmente, um objeto de conexão de banco de dados será retornado.
<?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";
}
?>
Agora, vamos executar o programa fornecido acima para abrir nosso banco de dados testdb: se o banco de dados for aberto com sucesso, ele apresentará a seguinte mensagem -
Opened database successfully
Crie uma mesa
O seguinte programa PHP será usado para criar uma tabela em um banco de dados criado anteriormente -
<?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);
?>
Quando o programa fornecido acima for executado, ele criará a tabela COMPANY em seu testdb e exibirá as seguintes mensagens -
Opened database successfully
Table created successfully
Operação INSERT
O seguinte programa PHP mostra como podemos criar registros em nossa tabela COMPANY criada no exemplo acima -
<?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);
?>
Quando o programa fornecido acima for executado, ele criará os registros fornecidos na tabela COMPANY e exibirá as duas linhas a seguir -
Opened database successfully
Records created successfully
SELECT Operação
O programa PHP a seguir mostra como podemos buscar e exibir registros de nossa tabela COMPANY criada no exemplo acima -
<?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);
?>
Quando o programa fornecido acima é executado, ele produzirá o seguinte resultado. Observe que os campos são retornados na sequência em que foram usados ao criar a tabela.
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
Operação ATUALIZAR
O código PHP a seguir mostra como podemos usar a instrução UPDATE para atualizar qualquer registro e, em seguida, buscar e exibir os registros atualizados de nossa tabela 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);
?>
Quando o programa fornecido acima for executado, ele produzirá o seguinte resultado -
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
Operação DELETE
O código PHP a seguir mostra como podemos usar a instrução DELETE para excluir qualquer registro e, em seguida, buscar e exibir os registros restantes de nossa tabela 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);
?>
Quando o programa fornecido acima for executado, ele produzirá o seguinte resultado -
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