HTMLpointHTMLpoint HTMLpoint.com


 Funciones



Empecemos con una pequeña adevertencia: todas las funciones que se refieren a la base de datos PostgreSQL tienen el nombre que empieza por "pg_" para diferenciarlas de las funciones parecidas utilizadas en otras bases de datos. No hubiera tenido ningún sentido utilizar una función con el nombre genérico "connect()" para la conexión a una base de datos. Por lo tanto tendréis la función "pg_Connect()" y la función "mysql_connect()" y muchas más cuyo nombre termina por "connect", pero que se refieren a diferentes bases de datos.

Ahora podemos empezar el análisis de las funciones que pueden ser útiles para nuestros script.

pg_connect

Abre la conexión a una base de datos Postgres; la sintaxis de la función acepta mediante argumentos el huésped, la puerta, determinadas opciones (opcionales), la tty (opcionales) y el nombre de la base de datos. Todos los valores se tienen que poner entre comillas. La conexión desde una base de datos PostgreSQL se puede hacer con:

pg_connect("dbname=... port=... host=... tty=... options=... user=... password=...");

Obviamente, se tienen que sustituir los puntos suspensivos con los valores necesarios para la conexión. Podemos escribir simplemente:

$conexión = pg_connect("dbname=agenda");

Con esta sintaxis, por lo tanto, nos hemos conectado a nuestra base de datos. Para comprobarlo, sin embargo, podemos añadir:

$conexión = pg_connect("prueba_db");
if ($conexión) {
print "Conectado\n";
}

De este modo, si se logra establecer una conexión (y, por tanto, si la variable $conexión esta definida) aparecerá una línea de confirmación. Uno de los errores más usuales es pensar que $conexión, en este caso, se puede leer para ver los valores introducidos en la base de datos. Introducir "echo $conexión" no tiene ningún sentido porque el script sólo conseguiría restituirnos un "1", en caso de que la conexión se efectúe, y un "0", en caso contrario. Por tanto, $conexión y, en general, cualquier variable que asociemos a la función pg_connect ( y, en general, a todas las funciones de connect relativas a otras bases de datos) es solamente el estado de la conexión, y no un instrumento para leer los datos del database. Veremos a continuación cómo leer los datos y visualizarlos en una página web.

pg_Close

Como podemos imaginar, la función pg_Close cierra una conexión precedentemente abierta con pg_Connect.
Para cerrar la conexión que hemos abierto con el código antes presentado, será suficiente utilizar la sintaxis:

$desconexión = pg_Close($conexión);

que reproducirá valor verdadero (1) en caso de que la conexión se haya establecido precedentemente y, con este mando, cerrada, falso, en caso contrario.

pg_DBname

Esta función restituye el nombre de la base de datos a la que estemos conectados, o el valor falso en caso de que no se haya establecido ninguna conexión; la sintaxis para utilizar este mando es:

$dbname = pg_DBname($conexión);
echo "$dbname\n";


pg_ErrorMessage

Restituye una cadena que contiene un mensaje de error que proviene del database.

pg_Exec

-------- Básicamente, este mando ejecuta una query (pregunta) en la base de datos. Nos podríamos esperar que esta función representa los campos interesados en la query pero no es así. Si escribimos, por ejemplo:

$query = pg_Exec($conexión, "SELECT * FROM indirizzi");

no podemos visualizar directamente el valor de $query, o mejor no tiene sentido hacerlo. Tendremos que servirnos de otras funciones que veremos a continuación, por ejemplo pg_Numrows, pg_Fetch_Array etc.

pg_Fetch_Array

Ejecuta el fetch de una línea introduciendo los valores dentro de un array. Hemos hablado antes de pg_Exec y de que muchas funciones son "complementari" a ésta. Es el caso de pg_Fetch_Array. Podemos ejemplificar todo:

$query = pg_Exec($conexión, "SELECT * FROM direcciones");
$query_result = pg_Fetch_Array($query, 0);
echo "<b>Nombre:</b> ";
echo $query_result[0], "<br>";
echo "<b>Apellidos:</b> ";
echo $query_result[1], "<br>";
echo "<b>Dirección:</b> ";
echo "$query_result[2], $query_result[3] <br>";


Veamos más de cerca lo que hemos hecho. Entretanto con pg_Exec_Query hemos colocado la query que queremos ejecutar en la base de datos; con el sucesivo pg_Fetch_array hemos especificado que la primera línea de la query (la línea cuyo número es cero) se memorizase en la variable $query_result; después hemos visualizado todos los datos formatándolos para una página HTML.
Notad que pg_Fetch_Array acepta como parámetros la query (en nuestro caso $query) y la línea a la que hace referencia; nosotros, en este caso hemos elegido la primera, pero con una sintaxis más "fina" podremos crear la misma página con todos los datos introducidos en el database:

$query = pg_Exec($conexión, "SELECT * FROM direcciones");
$righe=pg_numrows($query); // veremos la función pg_numrows más adelante
for ($num=0;$num<=$líneas-1;$num++) {
$query_result=pg_fetch_array($query, $num);
echo "<b>Nombre:</b> ";
echo $query_result[0], "
";
etc. etc.
}


De esta forma, con un simple "for" y sabiendo el número total de las líneas interesadas en la query, hemos logrado que todas sean procesadas y visualizadas.

pg_Fetch_Object

Esta función ejecuta las mismas operaciones que la anterior con la diferencia de que en este caso se crea un objeto con los resultados de la query y no un array de datos. De este modo no tendremos ya que invocar los datos del interior del array con los números del índice, sino que podremos utilizar el nombre del campo, por ejemplo:

$query = pg_Exec($conexión, "SELECT * FROM direcciones");
$query_result = pg_Fetch_Object($query, 0);

echo "Nombre: ", $query_result->nombre;
echo "Apellidos: ", $query_result->apellidos, "\n";
echo "Dirección:", $query_result->dirección, "\n";


También en este caso hubiéramos podido introducir un bloque "for" para visualizar todos los datos presentes en la base de datos.

pg_NumFields e pg_NumRows

Estas dos funciones restituyen, respectivamente, el número de campos y de líneas interesadas en la query. Hemos visto la función pg_NumRows precedentemente, pero podemos resumir el uso de las dos funciones con:

$query = pg_Exec($conexión, "SELECT * FROM direcciones WHERE nombre LIKE
'Ma%' OR apellidos LIKE 'Ro%'");
$righe = pg_NumRows($query);
$campi = pg_NumFields($query);
echo "La query interesa $líneas líneas y $campos campos.\n";


Como veis, hemos complicado la query pero el resto del código es muy fácil de entender.

  Volver al inicio de la página