English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PostgreSQL 基础教程

PostgreSQL 高级教程

PostgreSQL 接口

PostgreSQL PHP 接口

安装

最新版本的 PHP 5.3. x 默认启用了 PostgreSQL 扩展。可以在编译时使用 -- without-pgsql 来禁用它。您仍然可以使用 yum 命令来安装 PHP-PostgreSQL 接口

yum install php-pgsql

在使用PHP PostgreSQL接口之前,在PostgreSQL安装目录中找到pg_hba.conf文件,添加以下一行

# IPv4 local connections:
host    all         all         127.0.0.1/32          md5

如果postgres服务器没有运行,可以使用以下命令启动/重新启动postgres服务器-

[root@host]# service postgresql restart
Stopping postgresql service:                               [  OK  ]
Iniciando serviço postgresql:                               [  OK  ]

Os usuários do Windows devem ativar o php_pgsql.dll para usar essa extensão. Este DLL está incluído no PHP5.3versão para Windows após .x

Para obter instruções detalhadas de instalação, consulte nossaTutoriais do PHPe seu site oficial.

Interfaces de API do PHP

A seguir estão alguns procedimentos importantes do PHP, que podem atender às suas necessidades de banco de dados PostgreSQL em programas PHP. Se você estiver procurando por uma aplicação mais complexa, consulte a documentação oficial do PHP.

N.ºAPI & Descrição
1

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

Isso abrirá uma conexão com o banco de dados PostgreSQL especificado por connection_string.

Se PGSQL_CONNECT_FORCE_NEW for passado como connect_type, uma nova conexão será criada na segunda chamada de pg_connect(), mesmo que connection_string seja a mesma que uma conexão existente.

2

bool pg_connection_reset ( resource $connection )

Esta rotina reconfigura a conexão. É muito útil para recuperação de erros. Retorna TRUE com sucesso, FALSE em caso de falha.

3

int pg_connection_status ( resource $connection )

Retorna o estado da conexão especificada. Retorna PGSQL_CONNECTION_OK ou PGSQL_CONNECTION_BAD.

4

string pg_dbname ([ resource $connection ] )

Retorna o nome do banco de dados da conexão PostgreSQL dada.

5

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

Tais como, submeter uma solicitação, usar algo fornecido para criar uma instrução preparada e aguardar sua conclusão.

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 )

返回 PostgreSQL 结果资源中的行数,例如 SELECT 语句返回的行数。

12

bool pg_close ([ resource $connection ] )

关闭与给定连接资源关联的 PostgreSQL 数据库的非持久连接。

13

string pg_last_error ([ resource $connection ] )

返回给定连接的最后一条错误消息。

14

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

转义一个文本以插入到文本字段中。

15

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

转义用于查询数据库的字符串。

连接数据库

下面的 PHP 代码演示如何连接到本地计算机上的现有数据库,并最终返回数据库连接对象。

<?php
   $host = "host =" 127.0.0.1";
   $port = "port =" 5432";
   $dbname = "dbname = testdb";
   $credentials = "user = postgres password=pass"123";
   $db = pg_connect("$host $port $dbname $credentials"  );
   if(!$db) {
      echo "Erro: Não foi possível abrir o banco de dados\n";
   } else {
      echo "Banco de dados aberto com sucesso\n";
   }
?>

现在,让我们运行上面给定的程序来打开我们的数据库 testdb: 如果数据库被成功打开,那么它将给出以下消息-

Banco de dados aberto com sucesso

创建表

以下PHP程序将用于在先前创建的数据库中创建表

<?php
   $host = "host =" 127.0.0.1";
   $port = "port =" 5432";
   $dbname = "dbname = testdb";
   $credentials = "user = postgres password=pass"123";
   $db = pg_connect("$host $port $dbname $credentials"  );
   if(!$db) {
      echo "Erro: Não foi possível abrir o banco de dados\n";
   } else {
      echo "Banco de dados aberto com sucesso\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 "Tabela criada com sucesso\n";
   }
   pg_close($db);
?>

Quando o programa acima mencionado é executado, ele criará a tabela COMPANY no testdb e exibirá a seguinte mensagem-

Banco de dados aberto com sucesso
Tabela criada com sucesso

Operação INSERT

O seguinte programa PHP demonstra como no exemplo acima-para criar registros na tabela COMPANY criada

<?php
   $host = "host="127.0.0.1";
   $port = "port="5432";
   $dbname = "dbname = testdb";
   $credentials = "user = postgres password=pass"123";
   $db = pg_connect("$host $port $dbname $credentials"  );
   if(!$db) {
      echo "Erro: Não foi possível abrir o banco de dados\n";
   } else {
      echo "Banco de dados aberto com sucesso\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 "Registros criados com sucesso\n";
   }
   pg_close($db);
?>

Quando o programa acima mencionado é executado, ele criará os registros fornecidos na tabela COMPANY e exibirá as seguintes duas linhas

Banco de dados aberto com sucesso
Registros criados com sucesso

Operação SELECT

O seguinte programa PHP mostra como fazer o seguinte exemplo-para obter e exibir os registros da tabela COMPANY criada

<?php
   $host = "host =" 127.0.0.1";
   $port = "port =" 5432";
   $dbname = "dbname = testdb";
   $credentials = "user = postgres password=pass"123";
   $db = pg_connect("$host $port $dbname $credentials"  );
   if(!$db) {
      echo "Erro: Não foi possível abrir o banco de dados\n";
   } else {
      echo "Banco de dados aberto com sucesso\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 "Operação concluída com sucesso\n";
   pg_close($db);
?>

Quando o programa acima mencionado é executado, ele produz os seguintes resultados. Observe que os campos serão retornados na ordem em que foram criados a tabela.

Banco de dados aberto com sucesso
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
Operação concluída com sucesso

Operação UPDATE

O seguinte código PHP mostra como usar a instrução UPDATE para atualizar qualquer registro, então obter e exibir o registro atualizado da nossa tabela COMPANY

<?php
   $host = "host="127.0.0.1";
   $port = "port="5432";
   $dbname = "dbname = testdb";
   $credentials = "user = postgres password=pass"123";
   $db = pg_connect("$host $port $dbname $credentials"  );
   if(!$db) {
      echo "Erro: Não foi possível abrir o banco de dados\n";
   } else {
      echo "Banco de dados aberto com sucesso\n";
   }
   $sql =<<<EOF
      UPDATE COMPANY SET SALARY = 25000,00 onde ID =1;
EOF;
   $ret = pg_query($db, $sql);
   if(!$ret) {
      echo pg_last_error($db);
      exit;
   } else {
      echo "Registro atualizado com sucesso\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 "Operação concluída com sucesso\n";
   pg_close($db);
?>

Quando o programa acima for executado, os seguintes resultados serão gerados

Banco de dados aberto com sucesso
Registro atualizado com sucesso
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
Operação concluída com sucesso

Operação DELETE

O seguinte código PHP mostra como usar a instrução DELETE para excluir qualquer registro, então da tabela COMPANY-Obter e exibir os registros restantes

<?php
   $host = "host =" 127.0.0.1";
   $port = "port =" 5432";
   $dbname = "dbname = testdb";
   $credentials = "user = postgres password=pass"123";
   $db = pg_connect("$host $port $dbname $credentials"  );
   if(!$db) {
      echo "Erro: Não foi possível abrir o banco de dados\n";
   } else {
      echo "Banco de dados aberto com sucesso\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 "Registro deletado com sucesso\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 "Operação concluída com sucesso\n";
   pg_close($db);
?>

Quando o programa acima for executado, os seguintes resultados serão gerados

Banco de dados aberto com sucesso
Registro deletado com sucesso
ID = 3
NAME = Teddy
ADDRESS = 23
SALARY =  20000
ID = 4
NAME = Mark
ADDRESS = 25
SALARY =  65000
ID = 1
NAME = Paul
ADDRESS = 32
SALARY =  25000
Operação concluída com sucesso