php75

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 *

Información básica sobre protección de datos Ver más

  • Responsable: Eugenio Chaparro.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a digitalocean.com que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad