PostgreSQL - Interfaz PHP
Instalación
La extensión PostgreSQL está habilitada de forma predeterminada en las últimas versiones de PHP 5.3.x. Es posible deshabilitarlo usando--without-pgsqlen tiempo de compilación. Aún así, puede usar el comando yum para instalar PHP -Interfaz PostgreSQL -
yum install php-pgsql
Antes de comenzar a utilizar la interfaz PHP PostgreSQL, busque el pg_hba.conf archivo en su directorio de instalación de PostgreSQL y agregue la siguiente línea -
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Puede iniciar / reiniciar el servidor de Postgres, en caso de que no se esté ejecutando, usando el siguiente comando:
[root@host]# service postgresql restart
Stopping postgresql service: [ OK ]
Starting postgresql service: [ OK ]
Los usuarios de Windows deben habilitar php_pgsql.dll para poder usar esta extensión. Esta DLL se incluye con las distribuciones de Windows en las últimas versiones de PHP 5.3.x
Para obtener instrucciones de instalación detalladas, consulte nuestro tutorial de PHP y su sitio web oficial.
API de interfaz PHP
Las siguientes son rutinas PHP importantes, que pueden ser suficientes para trabajar con la base de datos PostgreSQL desde su programa PHP. Si está buscando una aplicación más sofisticada, puede consultar la documentación oficial de PHP.
S. No. | API y descripción |
---|---|
1 | resource pg_connect ( string $connection_string [, int $connect_type ] ) Esto abre una conexión a una base de datos PostgreSQL especificada por connection_string. Si PGSQL_CONNECT_FORCE_NEW se pasa como connect_type, entonces se crea una nueva conexión en el caso de una segunda llamada a pg_connect (), incluso si la connection_string es idéntica a una conexión existente. |
2 | bool pg_connection_reset ( resource $connection ) Esta rutina restablece la conexión. Es útil para la recuperación de errores. Devuelve VERDADERO en caso de éxito o FALSO en caso de error. |
3 | int pg_connection_status ( resource $connection ) Esta rutina devuelve el estado de la conexión especificada. Devuelve PGSQL_CONNECTION_OK o PGSQL_CONNECTION_BAD. |
4 | string pg_dbname ([ resource $connection ] ) Esta rutina devuelve el nombre de la base de datos que el recurso de conexión de PostgreSQL dado. |
5 | resource pg_prepare ([ resource $connection ], string $stmtname, string $query ) Esto envía una solicitud para crear una declaración preparada con los parámetros dados y espera su finalización. |
6 | resource pg_execute ([ resource $connection ], string $stmtname, array $params ) Esta rutina envía una solicitud para ejecutar una declaración preparada con parámetros dados y espera el resultado. |
7 | resource pg_query ([ resource $connection ], string $query ) Esta rutina ejecuta la consulta en la conexión de base de datos especificada. |
8 | array pg_fetch_row ( resource $result [, int $row ] ) Esta rutina obtiene una fila de datos del resultado asociado con el recurso de resultado especificado. |
9 | array pg_fetch_all ( resource $result ) Esta rutina devuelve una matriz que contiene todas las filas (registros) en el recurso de resultado. |
10 | int pg_affected_rows ( resource $result ) Esta rutina devuelve el número de filas afectadas por las consultas INSERT, UPDATE y DELETE. |
11 | int pg_num_rows ( resource $result ) Esta rutina devuelve el número de filas en un recurso de resultado de PostgreSQL, por ejemplo, el número de filas devueltas por la instrucción SELECT. |
12 | bool pg_close ([ resource $connection ] ) Esta rutina cierra la conexión no persistente a una base de datos PostgreSQL asociada con el recurso de conexión dado. |
13 | string pg_last_error ([ resource $connection ] ) Esta rutina devuelve el último mensaje de error para una conexión determinada. |
14 | string pg_escape_literal ([ resource $connection ], string $data ) Esta rutina escapa de un literal para su inserción en un campo de texto. |
15 | string pg_escape_string ([ resource $connection ], string $data ) Esta rutina escapa a una cadena para consultar la base de datos. |
Conectando a la base de datos
El siguiente código PHP muestra cómo conectarse a una base de datos existente en una máquina local y finalmente se devolverá un objeto de conexión a la base de datos.
<?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";
}
?>
Ahora, ejecutemos el programa anterior para abrir nuestra base de datos testdb: si la base de datos se abre correctamente, aparecerá el siguiente mensaje:
Opened database successfully
Crear una tabla
El siguiente programa PHP se utilizará para crear una tabla en una base de datos creada previamente:
<?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);
?>
Cuando se ejecuta el programa anterior, creará la tabla EMPRESA en su testdb y mostrará los siguientes mensajes:
Opened database successfully
Table created successfully
INSERTAR Operación
El siguiente programa PHP muestra cómo podemos crear registros en nuestra tabla EMPRESA creada en el ejemplo anterior:
<?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);
?>
Cuando se ejecuta el programa dado anteriormente, creará los registros dados en la tabla EMPRESA y mostrará las siguientes dos líneas:
Opened database successfully
Records created successfully
SELECCIONAR Operación
El siguiente programa PHP muestra cómo podemos buscar y mostrar registros de nuestra tabla EMPRESA creada en el ejemplo anterior:
<?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);
?>
Cuando se ejecuta el programa dado anteriormente, producirá el siguiente resultado. Tenga en cuenta que los campos se devuelven en la secuencia en que se usaron al crear la tabla.
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
Operación ACTUALIZAR
El siguiente código PHP muestra cómo podemos usar la instrucción UPDATE para actualizar cualquier registro y luego buscar y mostrar registros actualizados de nuestra tabla EMPRESA:
<?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);
?>
Cuando se ejecuta el programa anterior, producirá el siguiente 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
Operación DELETE
El siguiente código PHP muestra cómo podemos usar la declaración DELETE para eliminar cualquier registro y luego buscar y mostrar los registros restantes de nuestra tabla EMPRESA:
<?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);
?>
Cuando se ejecuta el programa anterior, producirá el siguiente 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