¿Como editar un registro de una tabla en php?

publicado por: Anonymous

Muy buenas! Es primera vez que tengo este extraño error que aparece al tratar de editar un registro de la tabla llamada estado en formato php en conjunto con html en el base de datos aún utilizo PhpMyAdmin. He estado poniendome al dia con los inyecciones sql, para mantener la seguridad necesaria, aun sigo utilizando el Mysqli con estilo procedural.

Tabla estado

_x000D_

_x000D_

-- phpMyAdmin SQL Dump_x000D_
-- version 4.6.5.2_x000D_
-- https://www.phpmyadmin.net/_x000D_
--_x000D_
-- Servidor: 127.0.0.1_x000D_
-- Tiempo de generación: 26-05-2017 a las 16:19:22_x000D_
-- Versión del servidor: 10.1.21-MariaDB_x000D_
-- Versión de PHP: 5.6.30_x000D_
_x000D_
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";_x000D_
SET time_zone = "+00:00";_x000D_
_x000D_
_x000D_
/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;_x000D_
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;_x000D_
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;_x000D_
/*!40101 SET NAMES utf8mb4 */;_x000D_
_x000D_
--_x000D_
-- Base de datos: `webpractica`_x000D_
--_x000D_
_x000D_
-- --------------------------------------------------------_x000D_
_x000D_
--_x000D_
-- Estructura de tabla para la tabla `estado`_x000D_
--_x000D_
_x000D_
CREATE TABLE `estado` (_x000D_
  `id_estado` int(11) NOT NULL,_x000D_
  `Estado` varchar(100) DEFAULT NULL,_x000D_
  `Fecha_Creacion` date DEFAULT NULL_x000D_
) ENGINE=InnoDB DEFAULT CHARSET=latin1;_x000D_
_x000D_
--_x000D_
-- Volcado de datos para la tabla `estado`_x000D_
--_x000D_
_x000D_
INSERT INTO `estado` (`id_estado`, `Estado`, `Fecha_Creacion`) VALUES_x000D_
(1, 'Completado', '2017-05-13'),_x000D_
(2, 'Incompleto', '2017-05-13'),_x000D_
(3, 'Analizado', '2017-05-13'),_x000D_
(4, 'Bloqueado', '2017-05-13'),_x000D_
(7, 'Inedit', '2017-05-26');_x000D_
_x000D_
--_x000D_
-- Índices para tablas volcadas_x000D_
--_x000D_
_x000D_
--_x000D_
-- Indices de la tabla `estado`_x000D_
--_x000D_
ALTER TABLE `estado`_x000D_
  ADD PRIMARY KEY (`id_estado`);_x000D_
_x000D_
--_x000D_
-- AUTO_INCREMENT de las tablas volcadas_x000D_
--_x000D_
_x000D_
--_x000D_
-- AUTO_INCREMENT de la tabla `estado`_x000D_
--_x000D_
ALTER TABLE `estado`_x000D_
  MODIFY `id_estado` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;_x000D_
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;_x000D_
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;_x000D_
/*!40101 SET [email protected]_COLLATION_CONNECTION */;

_x000D_

_x000D_

_x000D_

Editar.html

_x000D_

_x000D_

<form method="POST" action="editar.php">_x000D_
id_estado: <input type= "text" name="id_estado"><br>_x000D_
Estado: <input type="text" name= "estado"><br>_x000D_
Fecha_Creacion: <input type="text" name="fecha" value="<?php date_default_timezone_set('Europe/Madrid'); echo date('Y-m-d'); ?>"><br>_x000D_
<input type="submit" name="editar" value="Editar informacion">_x000D_
</form>

_x000D_

_x000D_

_x000D_

editar.php

_x000D_

_x000D_

<?php_x000D_
$msg = $id_estado = $estado = $fecha_actual = NULL;_x000D_
_x000D_
if(isset($_POST['editar'])) {_x000D_
	$id_estado = $_POST['id_estado'];_x000D_
	$estado = $_POST['estado'];_x000D_
	$fecha_actual = $_POST['fecha'];_x000D_
_x000D_
	if ($id_estado && $estado && $fecha_actual) {_x000D_
		$link = mysqli_connect("localhost", "root", "localhost", "webpractica");_x000D_
_x000D_
	if (mysqli_connect_errno()) {_x000D_
		printf("Falló la conexión: %sn", mysqli_connect_error());_x000D_
		exit();_x000D_
	}_x000D_
_x000D_
	$query = mysqli_query($link, "UPDATE estado SET id_estado='$id_estado', Estado='$estado', Fecha_Creacion='$fecha_actual'");_x000D_
_x000D_
	if(!$query) {_x000D_
		printf("Error: %sn", mysqli_error($link));_x000D_
	} else {_x000D_
		$msg = "Los datos se editaron correctamente";_x000D_
	   }	_x000D_
	}_x000D_
}_x000D_
echo $msg;_x000D_
?>

_x000D_

_x000D_

_x000D_

Al tratar de establecer editar el registro de una tabla, digamos el id 7 que se ve en el base de datos (la tabla estado), que sería 7, inedit, 2017-05-26 y luego de hacer submit, aparece este error:

Error

Lo que me hace preguntarme, no sé si hice bien por el query de mysqli de editar.php siguiendo el formato de mysqli estilo procedural, pienso que el error debe estar ahí o en la tabla estado? He investigado sobre ello y no hubo ninguna respuesta al respecto. Espero atento su respuesta!
Muchos saludos!

solución

Lo que esta mal es que tienes mal tu sentencia SQL del UPDATE, la cual deberia de quedar de la siguiente manera:

$query = mysqli_query($link, "UPDATE estado SET Estado='$estado', Fecha_Creacion='$fecha_actual' WHERE id_estado='$id_estado'");

Te hace falta el WHERE para indicar a que registro en especifico quieres afectar. Para mas información puede checar la documentación de MySQL

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *