sql >> Base de Datos >  >> RDS >> Mysql

Cómo generar dinámicamente una declaración de ACTUALIZACIÓN de MYSQL basada en variables definidas desde el FORMULARIO HTML

Asumiendo que todos los nombres de campo en la tabla son los mismos que los nombres de las entradas de su formulario, esto es sencillo. Puedes usar esto:

$query = "UPDATE product SET";
$comma = " ";
foreach($_POST as $key => $val) {
    if( ! empty($val)) {
        $query .= $comma . $key . " = '" . mysql_real_escape_string(trim($val)) . "'";
        $comma = ", ";
    }
}
$sql = mysql_query($query);

Para estar más seguro, debe crear una lista blanca de parámetros aceptados, es decir, las columnas en su tabla como esta:

$query = "UPDATE product SET";
$comma = " ";
$whitelist = array(
    'title',
    'rating',
    'season',
    'brand_id',
    'cateogry',
    // ...etc
);
foreach($_POST as $key => $val) {
    if( ! empty($val) && in_array($key, $whitelist)) {
        $query .= $comma . $key . " = '" . mysql_real_escape_string(trim($val)) . "'";
        $comma = ", ";
    }
}
$sql = mysql_query($query);

De esa manera, su consulta solo puede contener parámetros que usted establezca, y si alguien logra inyectar extras (al cambiar los nombres de las entradas de su formulario, por ejemplo), no se pasará a su base de datos.

También te recomiendo que dejes de usar Mysql_* , está obsoleto . Debería consultar MySQLi o PDO como alternativas.