Evitando SQL Injection con consultas preparadas en PDO
Clase 15 de 26 • Curso de PHP: Bases de Datos
Contenido del curso
Clase 15 de 26 • Curso de PHP: Bases de Datos
Contenido del curso
Oscar Fuentes Esteves
Israel Josue Feric Godoy
Juan Camilo Perez Santana
Anthony Stive Tomasto Montañez
Juan Pablo Campuzano Monsalve
Al hacer la inserción con PDO en mi proyecto personal, me marcaba error en el valor booleano que le insertaba.
Esto porque al declararlo, lo declaraba en el index.php como:
":status" => "false",
Lo terminé cambiando a:
":status" => 0,
Y así, ya no me marcó error, supongo porque lo hice explicito. Trataré de investigar más en el tema de los booleanos en php.
creo que te lanzaba un error, porque estás lanzando un string. y creo que preparaste tu DB para un bool, trata de cambiarlo o en ves de colocar el false entre comillas dobles quitaselas y prueba. saludos.
en mi caso la consulta lanza un error cuando envio la data en el execute
public function store($data) { $connection = Conexion::getInstance()->get_database_instance(); $stmt = $connection->prepare("INSERT INTO withdrawals (paymentMethod, type, date, amount, description) VALUES(:paymentMethod, :type, :date, :amount, :description)"); $stmt->execute($data); }
Me lanza el siguiente mensaje de error: Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in
este es el código de mi index.php
$data = [ ":payment_method" => PayMethodEnum::CreditCard->value, ":type" => WithdrawalsTypeEnum::Purchase->value, ":date" => date("Y-m-d H:i:s"), ":amount" => 20, ":description" => "Compre un pan de 20 dolares por que quiero puedo y no me da miedo" ]; $withdrawal_controller = new Withdrawals_Controller(); $withdrawal_controller->store($data);
no se por que será! el caso es que no me realizo la inserción del dato.
en qué se diferencia msqli con PDO, cuál es más seguro?
Ambos ofrecen seguridad respecto a su programación, sin embargo en clases previas se identifica que ambas ofrecen una gama de opciones y configuración para realizar, la diferencia más notable a mi parecer, es la gran variedad de bases de datos que PDO tiene compatibilidad.