Posts Tagged ‘MySQL’

Articles

Uso de mysqli en PHP

In PHP on 13/12/2011 por Esteban Olate Etiquetado: , ,

Cuando se construye una web utilizando PHP y MySQL a menudo suele ocuparse la librería mysql, cuando existe mysqli, la extensión mejorada MySQL que posee PHP. A continuación un ejemplo de cómo implementar la clase mysqli en PHP.

El primer paso es crear la conexión con la base de datos, para esto necesitaremos conocer los datos de nuestro servidor (servidor, usuario, contraseña, nombre de la base de datos):

conexion.php:

<?php
    //Función que nos retornara una conexión con mysqli
    function crearConexion(){
        //Datos para la conexión con el servidor
        $servidor   = «localhost»;
        $nombreBD   = «prueba»;
        $usuario    = «root»;
        $contrasena = «»;
        //Creando la conexión, nuevo objeto mysqli
        $conexion = new mysqli($servidor,$usuario,$contrasena,$nombreBD);
        //Si sucede algún error la función muere e imprimir el error
        if($conexion->connect_error){
            die(«Error en la conexion : «.$conexion->connect_errno.
                                      «-«.$conexion->connect_error);
        }
        //Si nada sucede retornamos la conexión
        return $conexion;
    }
?>

 

El siguiente paso es ocupar este objeto y realizar una consulta, a continuación mostrare como ejecutar una consulta de selección y una consulta de inserción, favor tomar en cuenta la siguiente estructura de tabla:

Estructura de tabla:

Campo Tipo
idUsuario int
nombre varchar(50)

 

consultaInsert.php:

<?php
    //Incluimos el archivo de conexión
    include («conexion»);
    function consultaInsert($idUsuario,$nombre){
        //Comenzamos con un ‘try’, por si algo falla(BD, conexión, etc)
        try{
            //Abrimos una conexión con el servidor
            $conexion = crearConexion();
            //Declaramos nuestra consulta
            $sql = «INSERT INTO usuario VALUES (?,?)»;
            //Preparamos la consulta
            $sentencia = $conexion->prepare($sql);
            /* Le damos los parámetros (símbolos ‘?’),
             * pueden ser de tipo ‘i’ = integer
             *                    ‘d’ = double
             *                    ‘s’ = string
             *                    ‘b’ = BLOB
             */
            $sentencia->bind_param(«is»,$idUsuario,$nombre);
            //Ejecutamos la consulta, si resulta exitosa el método execute()
            //retornará true
            if($sentencia->execute()){
                //Cerramos la conexión y la sentencia
                $conexion->close();
                $sentencia->close();
                //Retornamos true, consulta satisfactoria
                return true;
            }
            //Sino surgió algún error y retornamos una cadena de error.
            else{
                $conexion->close();
                $sentencia->close();
                return «Error en la insercion.»;
            }
            //Si surge alguna excepción la capturamos e imprimimos,
            //retornamos false
        }catch(Exception $e){
            echo $e;
            $conexion->close();
            $sentencia->close();
            return false;
        }
    }
?>

 

consultaSelect.php:

<?php
    //Incluimos el archivo de conexión
    include («conexion»);
    function consultaSelect($idUsuario){
        try{
            $conexion = crearConexion();
            $sql = «SELECT nombre FROM usuario WHERE idUsuario = ?»;
            $sentencia = $conexion->prepare($sql);
            $sentencia->bind_param(«i»,$idUsuario);
            $sentencia->execute();
            /* A diferencia de lo anterior ahora con el método bind_result(),
             * es necesario declarar tantas varibles como datos que se piden
             * para este ejemplo es solo uno, obtenemos el dato que nos retorna
             * la consulta, si viene más de uno será necesario recorrer la
             * $sentencia en un ciclo hasta que el método feth() retorne false.
             */
            $sentencia->bind_result($nombre);
            //Preguntamos si retorno algo, método feth()
            if($sentencia->fetch()){
                $conexion->close();
                $sentencia->close();
                //Retornamos ese algo, referenciando la variable de bind_result()
                return $nombre;
            }else{
                $conexion->close();
                $sentencia->close();
                return «No encontrado»;
            }
        }catch(Exception $e){
            echo $e;
            $conexion->close();
            $sentencia->close();
            return false;
        }
    }
?>

 

Para ejecutar las funciones bastaría con incluir los archivos PHP (consultaInsert.php o consultaSelect.php) y llamar a las funciones respectivamente, los métodos y atributos de mysqli son muy extensos aquí solo he visto los más básicos para consultas sencillas, espero haber explicado bien su funcionamiento.


Esteban Olate