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  ]
Starting postgresql service:                               [  OK  ]

Los usuarios de Windows deben activar php_pgsql.dll para usar esta extensión. Este DLL se incluye en PHP5.3versión para Windows después de .x

Para obtener instrucciones de instalación detalladas, consulte nuestraTutoriales PHPy su sitio web oficial.

Interfaz de PHP APIs

A continuación, se presentan algunos procedimientos importantes de PHP que pueden satisfacer sus necesidades de bases de datos PostgreSQL en programas PHP. Si está buscando una aplicación más compleja, puede consultar la documentación oficial de PHP.

N.ºAPI & Descripción
1

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

Esto abrirá una conexión a la base de datos PostgreSQL especificada por connection_string.

Si se pasa PGSQL_CONNECT_FORCE_NEW como connect_type, se creará una nueva conexión en la segunda llamada a pg_connect(), incluso si la connection_string es la misma que la conexión existente.

2

bool pg_connection_reset ( resource $connection )

Este procedimiento restablece la conexión. Es muy útil para la recuperación de errores. Devuelve TRUE si tiene éxito, FALSE si falla.

3

int pg_connection_status ( resource $connection )

Devuelve el estado de la conexión especificada. Devuelve PGSQL_CONNECTION_OK o PGSQL_CONNECTION_BAD.

4

string pg_dbname ([ resource $connection ] )

Devuelve el nombre de la base de datos de la conexión PostgreSQL dada.

5

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

De esta manera, se realiza una solicitud, se crea una declaración preparada con algo dado y se espera que se complete.

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 "Error: Inhabilitado para abrir la base de datos\n";
   } else {
      echo "Base de datos abierta con éxito\n";
   }
?>

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

Base de datos abierta con éxito

创建表

以下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 "Error: Inhabilitado para abrir la base de datos\n";
   } else {
      echo "Base de datos abierta con éxito\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 "Tabla creada con éxito\n";
   }
   pg_close($db);
?>

Cuando se ejecuta el programa proporcionado anteriormente, creará la tabla COMPANY en testdb y mostrará el siguiente mensaje-

Base de datos abierta con éxito
Tabla creada con éxito

Operación INSERT

El siguiente programa PHP muestra cómo en el ejemplo anterior-Crear registros en la tabla COMPANY creada

<?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 "Error: Inhabilitado para abrir la base de datos\n";
   } else {
      echo "Base de datos abierta con éxito\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 creados con éxito\n";
   }
   pg_close($db);
?>

Cuando se ejecuta el programa proporcionado anteriormente, creará los registros dados en la tabla COMPANY y mostrará las siguientes dos líneas

Base de datos abierta con éxito
Registros creados con éxito

Operación SELECT

El siguiente programa PHP muestra cómo obtener desde el ejemplo anterior-Obtener y mostrar los registros de la tabla COMPANY creada en la base de datos

<?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 "Error: Inhabilitado para abrir la base de datos\n";
   } else {
      echo "Base de datos abierta con éxito\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 "Operación realizada con éxito\n";
   pg_close($db);
?>

Cuando se ejecuta el programa proporcionado anteriormente, generará los siguientes resultados. Nota: los campos se devolverán en el orden en que se creó la tabla.

Base de datos abierta con éxito
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
Operación realizada con éxito

Operación UPDATE

El siguiente código PHP muestra cómo utilizar la instrucción UPDATE para actualizar cualquier registro y luego obtener y mostrar el registro actualizado de nuestra tabla 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 "Error: Inhabilitado para abrir la base de datos\n";
   } else {
      echo "Base de datos abierta con éxito\n";
   }
   $sql =<<<EOF
      UPDATE COMPANY SET SALARY= 25000.00 donde ID=1;
EOF;
   $ret = pg_query($db, $sql);
   if(!$ret) {
      echo pg_last_error($db);
      exit;
   } else {
      echo "Registro actualizado con éxito\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 "Operación realizada con éxito\n";
   pg_close($db);
?>

Cuando se ejecuta el programa anterior, se producirá el siguiente resultado

Base de datos abierta con éxito
Registro actualizado con éxito
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
Operación realizada con éxito

Operación DELETE

El siguiente código PHP muestra cómo utilizar la instrucción DELETE para eliminar cualquier registro, luego obtener y mostrar el registro actualizado de la tabla COMPANY-Obtener y mostrar los 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 "Error: Inhabilitado para abrir la base de datos\n";
   } else {
      echo "Base de datos abierta con éxito\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 eliminado con éxito\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 "Operación realizada con éxito\n";
   pg_close($db);
?>

Cuando se ejecuta el programa anterior, se producirá el siguiente resultado

Base de datos abierta con éxito
Registro eliminado con éxito
ID = 3
NAME = Teddy
ADDRESS = 23
SALARY =  20000
ID = 4
NAME = Mark
ADDRESS = 25
SALARY =  65000
ID = 1
NAME = Paul
ADDRESS = 32
SALARY =  25000
Operación realizada con éxito