viernes, 16 de mayo de 2014

Conectar PHP con PostgreSQL

PHP es un lenguaje de scripting de propósito general y de código abierto que está especialmente pensado para el desarrollo web; Por otro lado este lenguaje nos permite conectarnos con distintos motores de base de datos, tales como: MySQL, PostgreSQL, SQL Server, Oracle, DB2, etc.

PostgreSQL es un sistema de gestión de bases de datos relacionales, distribuido bajo licencia BSD (Berkeley Software Distribution) y con su código fuente disponible libremente. Es el sistema de gestión de bases de datos de código abierto más potente del mercado.

Es por ello que en este tutorial les enseñare como conectar php con postgresql por las distintas ventajas que esta tiene, para ello utilizaremos AppServer (Ver Como Instalar AppServer), tal como se muestra a continuación:

Herramienta Software:

- PostgreSQL 9.1          Descargar

1° En primer lugar descargar e instalar PostgreSQL, luego crearemos un usuario, una base de datos, tal como se muestra a continuación:

Creación de Usuario:

postgres=# create user spark with password '123456';
CREATE ROLE

Creación de la Base de Datos:

postgres=# create database php_postgresql owner spark;
CREATE DATABASE

Conexión a la Base de Datos “php_postgresql”:

postgres=# \c php_postgresql spark localhost 5432;
Contraseña para usuario spark:
ADVERTENCIA: El código de página de la consola (850) difiere del código
            de página de Windows (1252).
            Los caracteres de 8 bits pueden funcionar incorrectamente.
            Vea la página de referencia de psql «Notes for Windows users»
            para obtener más detalles.
Ahora está conectado a la base de datos «php_postgresql» con el usuario «spark».

Creación de la Tabla “Usuario”:
Nota: El tipo de dato serial, es similar a la función que cumple el campo auto_increment en MySQL.

php_postgresql=> create table usuario(id serial primary key, usuario varchar(20) not null, contrasenia varchar(20) not null);
NOTICE:  CREATE TABLE creará una secuencia implícita «usuario_id_seq» para la columna serial «usuario.id»
NOTICE:  CREATE TABLE / PRIMARY KEY creará el índice implícito «usuario_pkey» para la tabla «usuario»
CREATE TABLE

Inserción de Datos para la Tabla “Usuario”:

php_postgresql=> insert into Usuario (usuario, contrasenia) values ('spark', '123456');
INSERT 0 1
php_postgresql=> insert into Usuario (usuario, contrasenia) values ('patrick', '654321');
INSERT 0 1
php_postgresql=> insert into Usuario (usuario, contrasenia) values ('wilder', '134265');
INSERT 0 1

Verificación de Registros de la Tabla “Usuario”:

php_postgresql=> select * from Usuario;
 id | usuario | contrasenia
----+---------+-------------
  1 | spark   | 123456
  2 | patrick | 654321
  3 | wilder  | 134265
(3 filas)
php_postgresql=>

2° Después de haber creado la base de datos, tabla e insertar usuario, realizaremos la conexión de php con postgresql, tal como se muestra a continuación:

php_postgresql.php

<?php

$user = "spark";
$password = "123456";
$dbname = "php_postgresql";
$port = "5432";
$host = "localhost";

$cadenaConexion = "host=$host port=$port dbname=$dbname user=$user password=$password";

$conexion = pg_connect($cadenaConexion) or die("Error en la Conexión: ".pg_last_error());
echo "<h3>Conexion Exitosa PHP - PostgreSQL</h3><hr><br>";

$query = "select id, usuario, contrasenia from usuario";

$resultado = pg_query($conexion, $query) or die("Error en la Consulta SQL");

$numReg = pg_num_rows($resultado);

if($numReg>0){
echo "<table border='1' align='center'>
<tr bgcolor='skyblue'>
<th>ID</th>
<th>Usuario</th>
<th>Contrasena</th></tr>"
;
while ($fila=pg_fetch_array($resultado)) {
echo "<tr><td>".$fila['id']."</td>";
echo "<td>".$fila['usuario']."</td>";
echo "<td>".$fila['contrasenia']."</td></tr>";
}
                echo "</table>";
}else{
                echo "No hay Registros";
}


pg_close($conexion);

?>
Referencia: PHP Sitio Oficial – PostgreSQL Sitio Oficial
Nota: Cualquier consulta comentar o visitar la página de Facebook para resolver sus dudas…

Autor: SPaRk.

10 comentarios:

  1. Útil y fácil, Gracias, excelente, ahora debo hacer una búsqueda en la misma tabla, alguna idea?

    ResponderEliminar
  2. me sale error al querer conectar la base de datos ayuda por favor

    ResponderEliminar
  3. y si quiero conectar dos bases de datos?, ambas estan en el mismo server pero son dos bases de datos diferentes

    ResponderEliminar
  4. ohhh patrick tengo que hacer algo en el php ini

    ResponderEliminar
    Respuestas
    1. Tienes que descomentar la extension php_pgsql.dll, es decir borrar el ";" de tal manera que te quede así extension=php_pgsql.dll

      Eliminar
  5. compile este codigo y con la base de datos y me sae este error:
    Fatal error: Call to undefined function pg_connect() in C:\AppServ\www\php_postgresql.php on line 11

    ResponderEliminar
  6. buenas tardes, requiero ayuda con un problema y quisiera saber si alguien puede ayudarme, tengo un servidor con centos 6.4 quiero conectar el php a la base de datos que tengo en el postgresql, pero al lanzar el aplicativo me muestra que no puede mostrar la pagina, agradezco la ayuda.

    ResponderEliminar
  7. Estoy siguiendo los pasos tal cual (el mismo texto, es decir los mismos comandos) pero al escribir "\c php_postgresql spark localhost 5432;" me aparece en la terminal este mensaje "FATAL: Ident authentication failed for user "spark"
    Se ha mantenido la conexión anterior" Espero que alguien me pueda ayudar por favor, se lo agradeceria mucho, es un trabajo escolar y llevo alrededor de dos días intentandolo.

    De antemano gracias

    ResponderEliminar

Google Maps