informaticaPC

Tutorial de PHP

PHP y MySQL

PHP y MySQL

A continuación vamos a mostrarte un sencillo ejemplo de cómo trabajar con bases de datos MySQL, para ello en la base de datos test crea la siguiente tabla que utilizaremos en el ejemplo:

create table tbl_personas (
    id integer unsigned not null,
    nombre varchar(50) not null,
    primary key (id)
)

A continuación creamos una función para realizar la conexión utilizando la funciones de PHP mysql_connect() para conectar con MySQL, mysql_select_db() para seleccionar la base de datos y mysql_error(), que nos devolverá un mensaje de error si se produjo alguno (lo detectamos con or die, que detendrá la ejecución):

<?php
    function conectar_MySQL( $host, $user, $pass, $bd )
    {
        // Conectar con MySQL:
        $conexion = mysql_connect( $host, $user, $pass ) or die ( "Error al conectar: ".mysql_error() );

        // Seleccionar a la base de datos deseada
        mysql_select_db($bd) or die ( "Error seleccionar la BD : ".mysql_error() );

        return $conexion;
    }
?>

Después creamos otra función que nos permite borrar todos los registros de la tabla o alguno determinado. Para procesar una consulta (tanto de selección como de actualización) usaremos la función mysql_query():

<?php
    function borrarPersona( $conexion, $id )
    {
        $sql = "DELETE FROM tbl_personas";

        // Si 'id' es diferente de 'null' sólo se borra la persona con el 'id' especificado:
        if( $id != null )
            $sql .= " WHERE id=".$id;

        // Ejecutamos la consulta (se devolverá true o false):
        return mysql_query( $sql, $conexion );
    }
?>

Después creamos otra función para insertar un registro:

<?php
    function insertarPersona( $conexion, $id, $nombre )
    {
        $sql = "INSERT INTO tbl_personas VALUES (".$id.", '".$nombre."')";

        // Ejecutamos la consulta (se devolverá true o false):
        return mysql_query( $sql, $conexion );
    }
?>

Creamos una nueva función para modificar un registro:

<?php
    function modificarPersona( $conexion, $id, $nombre )
    {
        $sql = "UPDATE tbl_personas SET nombre='".$nombre."' WHERE id=".$id;

        // Ejecutamos la consulta (se devolverá true o false):
        return mysql_query( $sql, $conexion );
    }
?>

Veamos otra función de ejemlpo usada para listar la tabla completa, en la que usamos las funciones de PHP mysql_num_rows() (devuelve el número de registros encontrados) y mysql_fetch_object() (devuelve los valores de los campos en un Objeto de PHP):

<?php
    function listarPersonas( $conexion )
    {
        $sql = "SELECT * FROM tbl_personas ORDER BY id";
        $ok = true;

        // Ejecutar la consulta:
        $rs = mysql_query( $sql, $conexion );

        if( $rs )
        {
            // Obtener el número de filas:
            if( mysql_num_rows($rs) > 0 )
            {
                echo "<p/>LISTADO DE PERSONAS<br/>";
                echo "===================<p />";

                // Recorrer el resource y mostrar los datos:
                while( $obj = mysql_fetch_object($rs) )
                    echo $obj->id." - ".$obj->nombre."<br />";
            }
            else
                echo "<p>No se encontraron personas</p>";
        }
        else
            $ok = false;

        return $ok;
    }
?>

Por último, creamos otra función que procesará una consulta y nos devolverá un Objeto en PHP con los datos del registro encontrado:

<?php
    function buscarPersona( $conexion, $id )
    {
        $sql = "SELECT * FROM tbl_personas WHERE id=".$id."";
        $devolver = null;

        // Ejecutar la consulta:
        $rs = mysql_query( $sql, $conexion );

        if( $rs )
        {
            // Si se encontró el registro, se obtiene un objeto en PHP con los datos de los campos:
            if( mysql_num_rows($rs) > 0 )
                $devolver = mysql_fetch_object( $rs );
        }

        return $devolver;
    }
?>

El código fuente principal del programa. Observa que debemos introducir los datos de acceso (dirección IP, usuario, contraseña y nombre de la base de datos) necesarios para poder conectar con MySQL:

<?php
    // Conectar (se detendrá la ejecución si se produce un error):
    $conexion = conectar_MySQL( "IP_DEL_SERVIDOR", "TU_USUARIO_MYSQL", "TU_PASSWORD", "test" );

    // Borrar todos los datos de la tabla:
    $ok = borrarPersona( $conexion, null );

    if( $ok == false )
        echo "Error al borrar los datos.<br/>";
    else
        echo "Datos borrados correctamente.<br/>";

    // insertar una persona:
    $ok = insertarPersona( $conexion, 1, 'Juan Rodríguez P.' );

    if( $ok == false )
        echo "Error al insertar los datos.<br/>";
    else
        echo "Datos insertados correctamente.<br/>";

    // insertar una persona:
    $ok = insertarPersona( $conexion, 2, 'Juan Rodríguez P.' );

    // insertar una persona:
    $ok = insertarPersona( $conexion, 3, 'Roberta Amador H.' );

    // Modificar la persona número 2:
    $ok = modificarPersona( $conexion, 1, "Alfredo Ramírez E." );

    if( $ok == false )
        echo "Error al modificar los datos.<br/>";
    else
        echo "Datos modificados correctamente.<br/>";

    // Modificar la persona:
    $ok = listarPersonas( $conexion );

    if( $ok == false )
        echo "<p>Error al listar los datos.</p>";
    else
        echo "<p>Datos listados correctamente.</p>";

    $obj = buscarPersona( $conexion, 2 );

    if( $obj == null )
        echo "No se encontró la persona";
    else
        echo "El nombre de la persona con el código: [".$obj->id."] es [".$obj->nombre."]";

    // Cerrar la conexión a MySQL
    mysql_close( $conexion );
?>

Descargar ejemplo

Acceder a MySQL desde PHP

Más información

Vea también: [ mysql_select_db() ] - [ mysql_query() ] - [ mysql_errno() ] - [ mysql_error() ] - [ mysql_num_rows() ]

Más información

Vea también: [ mysql_fetch_object() ] - [ mysql_close() ]

Excepciones en conexión y consultas a MySQL

Dado que mysql_connect() y mysql_select_db() sólo devuelven false en caso de error, puede resultar interesante la siguiente modificación que arrojará una excepción en tal caso:

<?php
    function conectar_MySQL( $host, $user, $pass, $bd )
    {
        $conexion = null;

        try
        {
            // Conectar con MySQL:
            $conexion = mysql_connect( $host, $user, $pass );

            if( $conexion )
            {
                // Seleccionar a la base de datos deseada:
                if( mysql_select_db($bd) == false )
                    throw new Exception( "Error MySQL ".mysql_errno().": ".mysql_error() );
            }
            else
                throw new Exception( "Error MySQL ".mysql_errno().": ".mysql_error() );
        }
        catch( Exception $e )
        {
            throw $e;
        }

        return $conexion;
    }
?>

La siguiente función también nos resultará útil para obtener una excepción en caso de error, puesto que mysql_query() tampoco devuelve una sino sólo false:

<?php
    function my_mysql_query( $sql, $conexion=null )
    {
        $rs = @mysql_query( $sql, $conexion );

        if( $rs == false )
            throw new Exception( "Error MySQL ".mysql_errno().": ".mysql_error() );

        return $rs;
    }
?>

NOTA: La arroba '@' se utiliza antes del nombre de una función para que no se muestren por pantalla mensajes de aviso o error (en caso de que se produzcan).

Primera página Anterior Siguiente Última página
Usamos cookies para ofrecerte una experiencia mejorada, el continuar navegando supone que aceptas su uso