Curso de PHP馃悩 y MySql馃惉 [75.- Consultas preparadas de PDO m谩s f谩ciles]

En este tutorial vamos a optimizar nuestro c贸digo de tal suerte que que la vinculaci贸n de par谩metros quede dentro de un solo if.

FORMA COMUN

if(empty($buscar['id'])==false){
    $where=$where." and id=:id ";
}
prepare($query);
if(empty($buscar['id'])==false){
    bindParam(":id",$buscar['id']);
}

FORMA OPTIMIZADA

if(empty($buscar['id'])==false){
    $where=$where." and id=:id ";
    $arregloParametros[':id']=$buscar['id'];
}

Codigo: https://github.com/programadornovato/php/commit/357f450f53839e7d093908e1f5f16828f0634ec9

<?php
    class sqlite{
        static private $db=null;
        function __construct()
        {
            try {
                self::$db=new PDO("sqlite:empresa.sqlite");
                self::$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
                self::$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_OBJ);    
                self::crearTablas();
            } catch (\Throwable $th) {
                die("Error al crear la bd empresa ".$th->getMessage());
            }
        }
        private static function crearTablas(){
            $query="CREATE TABLE IF NOT EXISTS productos(
                id INTEGER PRIMARY KEY AUTOINCREMENT,
                nombre VARCHAR (100) NOT NULL,
                precio REAL,
                categoria VARCHAR (100) NOT NULL,
                existencia INTEGER (5) NOT NULL,
                foto VARCHAR (100) NOT NULL
            );";
            try {
                self::$db->exec($query);
            } catch (\Throwable $th) {
                echo "Error al crear la tabla productos".$th->getMessage();
            }
        }
        public function insertar($producto=array()){
            //$nombre=$producto['nombre'];
            extract($producto);
            $query="INSERT INTO productos 
            (nombre, precio, categoria, existencia, foto)VALUES 
            (:nombre,:precio,:categoria,:existencia,:foto);";
            $sentecia=self::$db->prepare($query);
            $sentecia->bindParam(':nombre',$nombre);
            $sentecia->bindParam(':precio',$precio);
            $sentecia->bindParam(':categoria',$categoria);
            $sentecia->bindParam(':existencia',$existencia);
            $sentecia->bindParam(':foto',$foto);
            if($sentecia->execute()==true){
                return true;
            }
            else{
                return true;
            }
        }
        public function leer($buscar=array()){
            $where=" where 1=1 ";
            $arregloParametros=array();
            if(empty($buscar['id'])==false){
                $where=$where." and id=:id ";
                $arregloParametros[':id']=$buscar['id'];
            }
            if(empty($buscar['nombre'])==false){
                $where=$where." and nombre=:nombre ";
                $arregloParametros[':nombre']=$buscar['nombre'];
            }
            if(empty($buscar['precio'])==false){
                $where=$where." and precio=:precio ";
                $arregloParametros[':precio']=$buscar['precio'];
            }
            if(empty($buscar['categoria'])==false){
                $where=$where." and categoria=:categoria ";
                $arregloParametros[':categoria']=$buscar['categoria'];
            }
            if(empty($buscar['existencia'])==false){
                $where=$where." and existencia=:existencia ";
                $arregloParametros[':existencia']=$buscar['existencia'];
            }
            $query="SELECT id, nombre, precio, categoria, existencia, foto
            FROM productos
            $where ;";
            $sentencia=self::$db->prepare($query);
            $sentencia->execute($arregloParametros);
            $resultado=$sentencia->fetchAll();
            return $resultado;
        }
    }
?>

馃敆Acceder a sqlite desde VSCode: https://marketplace.visualstudio.com/items?itemName=alexcvzz.vscode-sqlite
馃敆Pagina SQLite: https://www.sqlite.org/index.html
馃敆 Fontawesome: https://www.bootstrapcdn.com/fontawesome/

馃帵 Esta lista de reproducci贸n: https://www.youtube.com/playlist?list=PLCTD_CpMeEKS2Dvb-WNrAuDAXObB8GzJ0

Codigos en gdrive: https://drive.google.com/file/d/1tQwYvfL2jiUFc6beTWkOkGmXkq5zzFw2/view?usp=sharing
Gracias por apoyar este canal: https://www.patreon.com/programadornovato?fan_landing=true

馃敆 Facebook: https://facebook.com/ProgramadorNovatoOficial
馃敆 Twitter: https://twitter.com/programadornova
馃敆 Linkedin: https://www.linkedin.com/in/programadornovato/
馃敆 Instagram: https://www.instagram.com/programadornovato/

Deja un comentario

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *