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/

Eugenio Chaparro

Entradas recientes

馃煝Editar c贸digo de un m贸dulo en Dolibarr [04]

馃煝Editar c贸digo de un m贸dulo en Dolibarr [04]

En este tutorial vamos editar el c贸digo de nuestro m贸dulo personas para poder personalizar algunas…

2 meses hace
馃煝Crear un sub_m贸dulo en Dolibarr [03]

馃煝Crear un sub_m贸dulo en Dolibarr [03]

En este tutorial vamos a crear un sub m贸dulo llamado seguridad que ser谩 muy parecido…

2 meses hace
馃煝Modificar un m贸dulo en Dolibarr [02]

馃煝Modificar un m贸dulo en Dolibarr [02]

En este tutorial aprenderemos a editar el objeto personas del modulo persona que creamos en…

2 meses hace
馃煝Constructor de m贸dulos en Dolibarr

馃煝Constructor de m贸dulos en Dolibarr

Como mencionamos anteriormente Dolibarr es un proyecto realizado sobre la base de una pol铆tica clara:…

2 meses hace
馃煝Tickets en Dolibarr [19]

馃煝Tickets en Dolibarr [19]

Los ticket en dolibarr nos ayudan a comunicar inconveniente en nuestros productos y servicios dentro…

2 meses hace
馃煝Agenda en Dolibarr [18]

馃煝Agenda en Dolibarr [18]

Las agendas en dolibarr nos ayudan a ver las actividades realizadas en proceso y por…

2 meses hace