Sentencias preparadas
Proteja sus consultas a la base de datos mediante sentencias preparadas
Sentencias preparadas es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 5 de 6. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 6 lecciones en total.
Descripción general de las sentencias preparadas
Sentencias preparadas
¡Bienvenido a la siguiente lección! En esta lección aprenderá sobre las sentencias preparadas y cómo hacen que sus interacciones con la base de datos sean seguras y eficientes. ¡Comencemos!

¿Qué son las sentencias preparadas?
¿Qué son las sentencias preparadas?
Las sentencias preparadas son una función de los sistemas de gestión de bases de datos que permite ejecutar consultas SQL de forma segura y eficiente. Separan el código SQL de los datos, lo que evita los ataques de inyección SQL.
Ejemplo: Utilizar marcadores de posición (:name, :email) en lugar de insertar directamente los datos proporcionados por el usuario en la consulta.
¿Por qué utilizar sentencias preparadas?
¿Por qué utilizar sentencias preparadas?
Las sentencias preparadas ofrecen varias ventajas:
- Seguridad: Evitan la inyección SQL al escapar las entradas de los usuarios.
- Eficiencia: Permiten reutilizar la misma sentencia con datos diferentes, lo que reduce el tiempo de análisis de las consultas.
- Mantenibilidad: Hacen que el código sea más fácil de leer y depurar.
Punto clave: Utilice siempre sentencias preparadas al trabajar con datos proporcionados por los usuarios.
Creación de una sentencia preparada
Creación de una sentencia preparada
Para crear una sentencia preparada, siga estos pasos:
- Escriba la consulta SQL con marcadores de posición.
- Prepare la consulta mediante la conexión a la base de datos.
- Asocie valores a los marcadores de posición.
- Ejecute la sentencia.
Ejemplo:
Consejo: Utilice matrices asociativas para asociar valores fácilmente.
<?php
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute(["name" => "Alice", "email" => "alice@mail.com"]);
?>Asociación de valores
Asociación de valores
Utilice los métodos bindParam() o bindValue() para asociar valores a los marcadores de posición. Ejemplo:
<?php
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(":name", $name);
$stmt->bindParam(":email", $email);
$name = "Bob";
$email = "bob@mail.com";
$stmt->execute();
?>
Uso de sentencias preparadas para consultas SELECT
Uso de sentencias preparadas para consultas SELECT
Las sentencias preparadas funcionan con todo tipo de consultas SQL, incluida SELECT. Ejemplo:
Consejo: Utilice fetchAll() para recuperar varias filas.
<?php
$sql = "SELECT * FROM users WHERE name = :name";
$stmt = $pdo->prepare($sql);
$stmt->execute(["name" => "Alice"]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
echo "Name: " . $result["name"] . ", Email: " . $result["email"];
?>
Reutilización de sentencias preparadas
Reutilización de sentencias preparadas
Las sentencias preparadas se pueden reutilizar con valores diferentes, lo que mejora la eficiencia. Ejemplo:
<?php
$stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$users = [
["name" => "Charlie", "email" => "charlie@mail.com"],
["name" => "Dave", "email" => "dave@mail.com"]
];
foreach ($users as $user) {
$stmt->execute($user);
}
echo "Multiple records inserted successfully!";
?>
Prevención de la inyección SQL
Prevención de la inyección SQL
Las sentencias preparadas escapan los caracteres especiales de las entradas de los usuarios, lo que evita los ataques de inyección SQL. Ejemplo:
<?php
$sql = "SELECT * FROM users WHERE email = :email";
$stmt = $pdo->prepare($sql);
$stmt->execute(["email" => "' OR 1=1; --"]);
$result = $stmt->fetch();
if ($result) {
echo "User found.";
} else {
echo "No user found.";
}
?>
¡Buen trabajo!
¡Buen trabajo!
¡Enhorabuena! Ha aprendido a utilizar sentencias preparadas en PHP para proteger sus interacciones con la base de datos. En la próxima lección, exploraremos técnicas avanzadas de consulta con JOIN y agregaciones. ¡Sigamos programando!

Preguntas frecuentes
¿La lección «Sentencias preparadas» es gratis?
Sí — el texto completo de «Sentencias preparadas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 6 lecciones en total.
¿Qué aprenderé en «Sentencias preparadas»?
Proteja sus consultas a la base de datos mediante sentencias preparadas Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar PHP Academy?
No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 5 de 6.
¿Cuánto tiempo toma la lección «Sentencias preparadas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de PHP Academy?
Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Introducción a las bases de datos
- Conexión a una base de datos MySQL
- Gestión de tablas
- Realización de operaciones CRUD
- Sentencias preparadas
- Trabajo con PDO