PDO (PHP Data Objects) es una extensión de PHP que proporciona una interfaz para trabajar con bases de datos de manera segura y flexible. Al utilizar PDO para interactuar con base de datos MySQL, podemos insertar datos de forma segura y eficiente.
Requisitos previos
Antes de empezar necesitamos una tabla, para ello creamos la tabla users
donde guardaremos los datos de nuestros usuarios, la creamos con el siguiente script SQL:
CREATE TABLE `users` (
`id` INT AUTO_INCREMENT,
`name` VARCHAR(180) NOT NULL,
`email` VARCHAR(180) NOT NULL,
`phone` INT NULL,
PRIMARY KEY (`id`) USING BTREE
);
El siguiente paso es realizar la conexión con MySQL usando las credenciales de nuestra base de datos, para mas detalle de esta conexión puedes leer Guía para conectar PHP a una base de datos con PDO.
<?php
// parameters
$dsn = 'mysql:host=localhost;port=3306;dbname=dbname';
$username = 'dbuser';
$password = 'password';
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'",
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ
);
try {
$pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
echo $e->getMessage();
die();
}
Preparar la Consulta SQL
Ahora que tenemos la conexión y la tabla, lo siguiente es crear el script para insertar datos en MySQL, para ello usaremos los métodos de PDO:
prepare
: Prepara una sentencia SQL para su ejecución.bindParam
: Vincula una variable PHP a un parámetro de la sentencia SQL.execute
: Ejecuta la sentencia SQL preparada.
Estos métodos se usan de la siguiente manera, preparamos la consulta, vinculamos las variables y ejecutamos la consulta:
$name = 'Louis';
$email = 'lous@gmail.com';
$phone = 99999999;
$stmt = $pdo->prepare("INSERT INTO users (name, email, phone) VALUES (:name, :email, :phone)");
$stmt->bindParam('name', $name);
$stmt->bindParam('email', $email);
$stmt->bindParam('phone', $phone);
$stmt->execute();
Ejemplo completo
Ahora que ya conocemos como insertar datos en MySQL, vamos a implementar un ejemplo con un formulario el cual contendrá tres campos (nombre, correo y teléfono) además de un botón para enviar.
<form name="insertar" method="post" action="register.php?action=add">
Nombre: <input type="text" name="name" placeholder="Nombres" />
Email: <input type="text" name="email" placeholder="Correo electrónico" />
Teléfono: <input type="text" name="phone" placeholder="Teléfono" />
<button type="submit">Enviar</button>
</form>
Lo siguiente es crear el script PHP que reciba estos campos del formulario, estos datos los filtraremos usando el método filter_input
para asegurarnos que estamos recibiendo los tipos de datos correctos. Luego de ello usamos PDO para insertar los datos:
// file: register.php
$action = $_GET['action'];
if ($action == 'add') {
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$phone = filter_input(INPUT_POST, 'phone', FILTER_SANITIZE_NUMBER_INT);
$stmt = $pdo->prepare("INSERT INTO users (name, email, phone) VALUES (:name, :email, :phone)");
$stmt ->bindParam(':name', $name);
$stmt ->bindParam(':email', $email);
$stmt ->bindParam(':phone', $phone);
if ($insert->execute()) {
echo "Datos insertados correctamente";
} else {
echo "Error al insertar datos";
}
}
Uniendo primero la conexión a base de datos y luego el proceso con el guardado de datos tendríamos nuestros script en PHP que inserta datos en MySQL se manera sencilla:
<?php
// prepare connection
$dsn = 'mysql:host=localhost;port=3306;dbname=dbname';
$username = 'dbuser';
$password = 'password';
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8mb4'",
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ
);
try {
$pdo = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
echo $e->getMessage();
die();
}
// save data
$action = $_GET['action'];
if ($action == 'add') {
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$phone = filter_input(INPUT_POST, 'phone', FILTER_SANITIZE_NUMBER_INT);
$stmt = $pdo->prepare("INSERT INTO users (name, email, phone) VALUES (:name, :email, :phone)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':phone', $phone);
if ($stmt->execute()) {
echo "Datos insertados correctamente";
} else {
echo "Error al insertar datos";
}
}
Recomendaciones
En el proceso de guardar datos en MySQL lo primero a tener en cuenta es la seguridad, por ello se recomienda:
- Siempre valida los datos que llegan del formulario, por ejemplo verifica que el usuario haya ingresado números para el campo teléfono.
- Siempre filtra los datos antes de guardarlos, por ejemplo si el usuario ha colocado texto para el teléfono lo puedes convertir a número antes de guardarlo.
- Puedes agregar validación del formulario con JavaScript, esto ayudará a que tus usuarios ingresen los datos de manera correcta.
Conclusiones
Insertar datos en MySQL utilizando PDO en PHP es un proceso sencillo y seguro. Al seguir estos pasos, puedes asegurarte de que tu aplicación maneje correctamente las inserciones de datos y esté protegida contra inyecciones SQL.
Envíar Comentario
En este sitio los comentarios se publican previa aprobación del equipo de Kodetop. Evita los comentarios ofensivos, obscenos o publicitarios. Si deseas publicar código fuente puedes hacerlo entre las etiquedas
<pre></pre>