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

Compartir
Publicado por
Eugenio Chaparro

Entradas recientes

Ejercicio.- Adivinar un numero random en kotlin (Curso de Kotlin desde cero [34])

Ejercicio.- Adivinar un numero random en kotlin (Curso de Kotlin desde cero [34])

En este tutorial vamos a hacer un programa que: Generamos un número aleatorio entre 1…

5 meses hace

Probar nuestra app web desde nuestra maquina local con ngrok en ubuntu 16.04 ☁️

Alguna vez has querido mostrar tu aplicación web en un dominio/subdominio o compartir un archivo,esto…

3 años hace

Mi primer app de shopify ?

RequerimientosRubyRubyGemsBundlerDescarga la aplicación de ejemplo1.- Ya que debemos correr la aplicación en una url con…

3 años hace

Instalar un entorno gráfico (xfce) en un servidor ubuntu 16.04 ?

En ocasiones tenemos la necesidad de tener un entorno grafico en un servidor por diferentes…

3 años hace

Certbot error certificer “Client with the currently selected authenticator does not support any combination…”

Ultimamnte me di cuenta que al intentar certificar mis dominios certbot envia este error:Client with…

3 años hace
hackear wifi con kali linux ?

hackear wifi con kali linux ?

Hoy en día tenemos la fortuna de tener muchas redes a nuestro alrededor, no necesariamente…

3 años hace