|
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_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
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 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
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.
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. 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 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++;
}
?>
|