Funciones PHP de acceso a MySQL


En esta leccion vamos a ver todas la funciones que provee PHP para el manejo de bases de datos MySQL. Los ejemplos del manejo de las funciones, los veremos a lo largo del curso.

 

mysql_affected_rows

int mysql_affected_rows(int [link_identifier] );

mysql_affected_rows devuelve el número de filas afectado en el último SELECT, UPDATE o DELETE pregunta en el servidor asociado con el identificador de conexión especificado. Si no se e especifica un identificador de conexión, se asume le de la última conexión abierta.

Este orden no es eficaz para las instrucciones SELECT, sólo en instrucciones que modifican archivos. Para recuperar el número de filas vuelto de un SELECT, usa mysql_num_rows.


mysql_close

int mysql_close(int [link_identifier] );

Devuelve: TRUE si se ha cerrado correctamente, FALSE en caso de errror.

mysql_close closes la conexión a la base de datos MySQL asociada al idenficador de conexión especificado. Si no se e especifica un identificador de conexión, se asume le de la última conexión abierta.

Note que esta función no es normalmente necesaria en conexiones no-persistentes (abiertas con mysl_connect) ya que ést se cerrará automáticamente al final de la ejecución del script o página. La función mysql_close no cierra una coneción persistente (abierta con mysql_pconnect()).

Ver tambien: mysql_connect y mysql_pconnect.


mysql_connect

int mysql_connect(string [hostname] , string [username] , string [password] );

Devuelve: un identificador de conexión, o FALSE en caso de error.

sql_connect establece una conexión a un servidor de MySQL. Todos los argumentos son optativos, y si no se especifican, los valores por defecto son (' el localhost', nombre del usuario del usuario que posee el proceso del servidor, la contraseña vacía). La cadena hostname también puede incluir un número del puerto, "hostname:port".

En caso de realizar una segunda llamada a mysql_connect con los mismos argumentos, no se establecerá ninguna nueva conexión, sino se devolverá el identificador de conexión de la ya existente.

La conexión al servidor se cerrará en cuanto la ejecución del script acabe, a menos que la cerremos antes con la función mysql_close.

Ver también: mysql_pconnect y mysql_close.


mysql_create_db

int mysql_create_db(string database name, int [link_identifier] );

La función mysql_create_db intenta crear una nueva base de datos en el servidor asociado con el identificado de conexión especificado.

Ver también: mysql_drop_db.


mysql_data_seek

int mysql_data_seek(int result_identifier, int row_number);

Devuelve: TRUE si toda ha ido bien, y FALSE en caso de error.

La función mysql_data_seek mueve el puntero que indica la fila actual al número de fila de la consulta que indica el identificador. La próxima llamada al mysql_fetch_row o mysql_fetch_array devolvería esa fila.

Ver también: mysql_data_seek.


mysql_dbname

string mysql_dbname(string result, int i);

mysql_dbname devuelve el nombre de la base de datos guardado en posición i de los resultados del indicador de consulta devuelto por la función del mysql_list_dbs. La función del mysql_num_rows puede usarse para determinar cuántos nombres de bases de datos están disponibles.


mysql_db_query

int mysql_db_query(string database, string query, int link_identifier);

Devuelve: un identificador de conexión, o FALSE en caso de error.

Ejecuta una consulta en una base de datos. Si el identificador no se especifica, la función intenta encontrar una conexión abierta con el servidor. Si no encuentra una conexión, intentará crear una (similar a mysql_connect( ) sin argumentos).

See also mysql_connect.


mysql_drop_db

int mysql_drop_db(string database_name, int [link_identifier] );

Devuelve: TRUE si toda ha ido bien, y FALSE en caso de error.

Elimina una base de datos del servidor asociado al identificador de conexión.

Ver también: mysql_create_db


mysql_errno

int mysql_errno();

Devuelve el número de error asociado a la última operación realizada.

Ver también: mysql_error


mysql_error

string mysql_error();

Devuelve el texto asociado al error producido en la última operación realizada por la base de datos.

<?php
mysql_connect("marliesle");
echo mysql_errno().": ".mysql_error()."<BR>";
mysql_select_db("nonexistentdb");
echo mysql_err_db("nonexistentdb");
echo mysql_errno().": ".mysql_error()."<BR>";
$conn = mysql_query("SELECT * FROM nonexistenttable");
echo mysql_errno().": ".mysql_error()."<BR>";
?>

Ver también: mysql_errno


mysql_fetch_array

array mysql_fetch_array(int result);

Devuelve un array con la información correspondiente al resultado de una consulta especificado por su identificador o 'false' si ya no hay más filas.

Es una versión extendida de mysql_fetch_row ( ). Además de almacenar los datos a través de índices numéricos del array, también lo hace a través de índices asociativos, utilizando los nombres de los campos como claves.
Si dos o más columnas del resultado tienen el mismo nombre de campo, la última es la que tiene preferencia. Para acceder a las demás es necesario utilizar el índice numérico o construir un alias para la columna:

select t1.f1 as foo t2.f1 as bar from t1, t2

as foo t2.f1 as bar from t1, t2

Esta función no es más lenta que 'mysql_fetch_row( )'.

Example 1. mysql fetch array

<?php
mysql_connect($host,$user,$password);
$result = mysql_db_query("database","select * from table");
while($row = mysql_fetch_array($result)) {
echo $row["user_id"];
echo $row["fullname"];
}
mysql_free_result($result);
?>


mysql_fetch_field

object mysql_fetch_field(int result, int [field_offset] );

Devuelve un objeto que contiene la información de los campos que componen un resultado de una consulta. Si no se especifica 'offset', devuelve información sobre el siguiente campo que todavía no ha sido devuelto.

Propiedades del objeto devuelto:

  • name - nombre del campo
  • table - nombre de la tabla a la que pertenece el campo
  • max_length - longitud máxima que puede tomar el campo
  • not_null - 1 si el campo no puede tomar valores nulos
  • primary_key - 1 si el campo es una clave principal (primary key)
  • unique_key - 1 si el campo tiene restricción de unicidad
  • multiple_key - 1 si el campo no tiene rest
  • multiple_key - 1 si el campo no tiene restricción de unicidad
  • numeric - 1 si el campo es numérico
  • blob - 1 si el campo es BLOB
  • type - tipo de dato (del campo)
  • unsigned - 1 si el campo es 'unsigned'
  • zerofill - 1 si el campo es rellenado con ceros

See also mysql_field_seek


mysql_fetch_lengths

int mysql_fetch_lengths(int result);

Devuelve: una tabla o FALSE si hay error.

mysql_fetch_lengths almacena en una tabla la longitud de cada campo de una consulta realizada con mysql_fetch_row o mysql_fetch_array. El índice de la tabla comienza en 0.

Ver también: mysql_fetch_row.


mysql_fetch_object

int mysql_fetch_object(int result);

Devuelve: un objeto o FALSE en caso de error.

Esta función es similar a'mysql_fetch_array, solo que los resultados de una consulta, en lugar de una tabla, los devuelve como un objeto. En este caso, sólo se puede acceder a los datos a través de los nombres de sus campos. La velocidad de ejecución es idéntica a la de 'mysql_fetch_array. Para referenciar el valor de un campo debemos utilizar el operador típicos de los objetos (->).

Ver también: mysql_fetch_array and mysql_fetch_row.


mysql_fetch_row

array mysql_fetch_row(int result);

 Devuelve: una tabla o FALSE si hay error.

Devuelve un tabla con los valores de los campos de la fila actual de la cosulta, la que especificar el indicador (result) , y mueve el puntero interno que marca la fila actual a la siguiente fila, si no hay mas filas devuelve FALSE. El índice de la tabla comienza en 0.

Ver también: mysql_fetch_array, mysql_fetch_object, mysql_data_seek, mysql_fetch_lengths, and mysql_result.


mysql_field_name

string mysql_field_name(string result, int i);

Devuelve el nombre del campo especificado por el índice.


mysql_field_seek

int mysql_field_seek(int result, int field_offset);

Mueve el puntero del campo actual hacia adelante las posiciones actual hacia adelante las posiciones indicadas por 'offset'.

Ver también: mysql_fetch_field.


mysql_field_table

string mysql_field_table(int result, int field_offset);

Devuelve el nombre de la tabla que almacena el campo especificado por el índice ( 'field_offset' ).


mysql_field_type

string mysql_field_type(string result, int field_offset);

Devuelve el tipo del campo del indice especificado.


mysql_field_flags

string mysql_field_flags(string result, int field_offset);

Devuelve los especificadores (flags) del campo especificado como una cadena de texto en la que cada especificador se corresponde con una palabra, y éstas van separadas mediante un espacio simple. Se puede analizar la cadena utilizando explode( )

Los especificadores son:

"not_null", "primary_key", "unique_key", "multiple_key", "blob", "unsigned", "zerofill", "binary", "enum", "auto_increment", "timestamp".


mysql_field_len

int mysql_field_len(string result, int field_offset);

Devuelve la longitud del campo especificado


mysql_free_result

int mysql_free_result(int result);

Sólo debería ser utilizada si la cantidad de memoria utilizada para almacenar el resultado de una consulta es muy grande. Cuando se ejecuta esta función, toda la memoria asociada al resultado se libera.


mysql_insert_id

int mysql_insert_id(void);

Esta función devuelve el ID (identificador) generado para los campos autonuméricos (AUTO_INCREMENTED). El ID devuelto es el correspondiente al de la última operación INSERT.


mysql_list_fields

int mysql_list_fields(string database, string tablename);

Devuelve información sobre la tabla. El valor resultante puede ser utilizado con mysql_field_flags(), mysql_field_len(), mysql_field_name(), and mysql_field_type().

El identificador que devuelve es un entero positivo o '-1' en caso de error. El texto que describe el error se encuentra en $phperrmsg.


mysql_list_dbs

int mysql_listdbs(void);

Devuelve un puntero que contiene las bases de datos disponibles para el servidor actual (msql daemon). Este valor se utiliza con la función mysql_dbname( ).


mysql_list_tables

int mysql_list_tables(string database, , int [link_identifier]);

Devuelve un identificar, el cual pasaremos a la función mysql_tablename para extraer el nombre de las tablas de la base de datos especificada.


mysql_num_fields

int mysql_num_fields(int result);

mysql_num_fields devuelve en número de campos de una consulta.

Ver también: mysql_db_query, mysql_query, mysql_fetch_field, mysql_num_rows.


mysql_num_rows

int mysql_num_rows(string result);

Devuelve el número de filas del resultado de una consulta.

Ver también: mysql_db_query, mysql_query and, mysql_fetch_row.query, mysql_query and, mysql_fetch_row.


mysql_pconnect

int mysql_pconnect(string [hostname] , string [username] , string [password] );

Devuelve: A positive MySQL persistent link identifier on success, or false on error

Devuelve un identificador de conexión persistente o 'false' en caso de error. Las diferencias con respecto a mysql_connect( ) son:

  • Primero, la función intenta encontrar una conexión persistente que ya esté abierta con la misma máquina, usuario y password. Si es encontrada, devuelve el identificador de la misma, en lugar de crear una nueva conexión.
  • Segundo, la conexión al servidor SQL no será cerrada cuando finalice la ejecución del script, sino que permanece abierta para un uso posterior.

La función mysql_close no cierra una conección abierta con mysql_pconnect. Las conecciones abierta con esta función se llaman "persistentes".


mysql_query

int mysql_query(string query, int [link_identifier] );

Ejecuta una consulta a la base de datos activa en el servidor asociado al identificador de conexión. Si no se especifica, se utiliza la última conexión abierta.fica, se utiliza la última conexión abierta. Si no hay conexiones abiertas la función intenta establecer una.

Esta función devuelve TRUE o FALSE para indicar si las operaciones UPDATE, INSERT o DELETE han tenido éxito. Para la operación SELECT devuelve un nuevo identificador de resultado.

Ver también: mysql_db_query, mysql_select_db, and mysql_connect.


mysql_result

int mysql_result(int result, int row, mixed field);

Devuelve el contenido de la celda de un resultado. El argumento 'field' puede ser un índice o el nombre del campo correspondiente o el nombre del campo de la forma: tabla.campo. Si la columna tiene un alias ('select foo as bar from...') se utiliza el alias en lugar del nombre de la columna.

En lugar de esta función es preferible usar mysql_fetch_row(), mysql_fetch_array(), and mysql_fetch_object(), con la que obtendremos mejor rendimiento.


mysql_select_db

int mysql_select_db(string database_name, int [link_identifier] );

Devuelve: true on success, false on error

Establece la base de datos activa en el servidor. Si no se especifica identificador de conexión se utiliza la última conexión abierta. Si no hay conexiones anexión abierta. Si no hay conexiones activas, la función intenta establecer una. A partir de la llamada a mysql_select_db las llamadas a mysql_query( ) actúan sobre la nueva base de datos activa.

Ver también: mysql_connect, mysql_pconnect, and mysql_query


mysql_tablename

string mysql_tablename(int result, int i);

Toma como argumento un puntero devuelto por la función mysql_list_tables( ) y devuelve el nombre de la tabla asociada al indice i. La función mysql_num_rows( ) puede ser utilizada para determinar el número de tablas.

<?php

mysql_connect ("localhost:3306");

$result = mysql_listtables ("basededatos");

$i = 0;

while ($i < mysql_num_rows ($result)) {

$tb_names[$i] = mysql_tablename ($result, $i);

echo $tb_names[$i] . "<BR>";

$i++;

}

?>

 

©José Antonio Rodríguez 2000.