Bases de Datos

Insertar, cambiar y borrar datos de una tabla MySQL

Aprende a insertar, cambiar y borrar en bases de datos MySQL con este vídeo.

Publicado el 29 de Marzo de 2016
Compartir

Hemos visto en un ejemplo anterior cómo podemos conectar a una base de datos MySQL desde PHP, accediendo a una tabla articulos para mostrar todas las entradas cuya columna country tuviera el valor ‘USA’.

En esta ocasión veremos cómo insertar y eliminar registros, y cómo buscar con un planteamiento más genérico. Para ello, partiremos del ejemplo anterior para construir sobre él un código más complejo. Si todavía no has revisado la entrada anterior, te recomendamos que lo hagas antes de leer este ejemplo.

En este caso, el código queda ampliado de manera que tras mostrar el listado de filas, se nos pregunta un comando y un datos a procesar con el mismo. Para cada comando, el dato servirá para una cosa distinta:

  • Insertar : Indicaremos el texto del título de un artículo (siempre insertará con país como USA).
     
  • Borrar : indicaremos el ID autonumérico del elemento a eliminar.
     
  • Buscar : indicaremos una cadena a buscar entre los títulos almacenados en la tabla.
     
!DOCTYPE html>
<html><head><meta charset="UTF-8"></head><body>
<?php
echo '<h1>Ejemplo MySQL</h1>';
// Conectamos con la base de datos

$db = new PDO('mysql:host=localhost;dbname=dbtest;charset=utf8', 'root', '');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

try {
	$stmt = $db->prepare("SELECT * FROM articulos WHERE pais=:mycountry");
	$stmt->execute( array(':mycountry' => 'USA') );
	$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $ex) {
    echo "Ocurrió un error<br>";
    echo $ex->getMessage();
    exit;
}

echo '<ul>';
foreach ($rows as $row) {
	echo '<li>'.$row['id'].' : ('.$row['pais'].') '.$row['titulo'].'</li>';
}
echo '</ul>';

echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">';
echo 'Comando:<br>';
echo '<select name="command"><option></option>';
echo '<option value="insert">Insertar</option>';
echo '<option value="search">Buscar</option>';
echo '<option value="delete">Borrar</option>';
echo '</select><br><br>';
echo 'Dato:<br><input type="text" name="data" /><br><br>';
echo '<input type="submit" value="Ejecutar" /></form><br>';

if ( ! isset( $_POST['command'] ) ) {
	exit;
}

switch ( $_POST['command'] ) {

	case 'insert':
		$stmt = $db->prepare("INSERT INTO articulos (titulo, pais) VALUES(:data, 'USA')");
		$stmt->execute( array(':data' => $_POST['data'] ) );
		echo 'Dato insertado';
	break;

	case 'search':
		$stmt = $db->prepare("SELECT * FROM articulos WHERE pais=:mycountry 
			AND titulo LIKE :search");
		$stmt->execute( array(
			':mycountry' => 'USA', 
			':search' => '%'.$_POST['data'].'%' ) );
		$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
		echo 'Resultado búsqueda: '.$_POST['data'].'<ul>';
		foreach ($rows as $row) {
			echo '<li>'.$row['id'].' : '.$row['titulo'].'</li>';
		}
		echo '</ul>';

	break;

	case 'delete':
		$stmt = $db->prepare("DELETE FROM articulos WHERE id=:theid");
		$stmt->execute( array(':theid' => $_POST['data'] ) );
		echo 'Dato borrado';
	break;

}

?>
</body>
</html>

Como ves en el código, partimos de la situación anterior, tras lo que mostramos un formulario al usuario para que seleccione la opción del comando que quiere ejecutar. Según el comando recibido, mediante una sentencia switch, ejecutamos el código necesario para ejecutarlo.

En el caso de la inserción, solo es preciso ejecutar una sentencia SQL INSERT , especificando título y país (que dejamos fijo a USA), y enlazando el parámetro a lo especificado en el campo de formulario data .

Para búsqueda, empleamos una sentencia SQL SELECT , pero en lugar de utilizar una igualdad, empleamos un comparador LIKE , donde añadiendo los caracteres “%” al principio y final de la cadena de búsqueda, indicamos que ésta puede encontrarse en cualquier lugar del campo título.

Por último, el borrado se realiza con una sentencia SQL DELETE , donde hay que poner mucho cuidado en añadir una condición WHERE para especificar el id de la fila a eliminar, o eliminaríamos todas las de la tabla.

Este ejemplo, una vez entendido el primero, no es mucho más complicado. Ya solo nos resta aprender un poco más de SQL para hacer cosas cada vez más complejas.


Compartir este post

También te puede interesar...

Tecnología

Por que usar PHP y MySQL

07 Enero 2019 Alex Arenols Solano
PHP y MySQL: Creando sitios dinámicos

Curso de PHP y MySQL: Creando sitios dinámicos

2 horas y 55 minutos · Curso

PHP es el lenguaje de programación del lado del servidor más conocido y sencillo de utilizar. Aprende a conectar PHP y MySql, a realizar consultas …

  • Desarrollo Web
Tecnología

Qué es MySQL: Características y ventajas

24 Septiembre 2019 Angel Robledano
Artículos
Ver todos