Insertar, cambiar y borrar datos de una tabla MySQL

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 class="text" name="data" /><br><br>';
echo '<input class="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.

Las cookies nos permiten ofrecer nuestros servicios. Al utilizar nuestros servicios, aceptas el uso que hacemos de las cookies. Más Información