sql >> Databáze >  >> RDS >> Mysql

Jak dynamicky generovat příkaz MYSQL UPDATE na základě definovaných proměnných z HTML FORM

Za předpokladu, že všechny názvy polí v tabulce jsou stejné jako názvy vašich formulářových vstupů, je to přímočaré. Můžete použít toto:

$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);

Chcete-li být bezpečnější, měli byste vytvořit seznam povolených parametrů, tj. sloupce v tabulce, jako je tento:

$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);

Tímto způsobem může váš dotaz obsahovat pouze vámi nastavené parametry, a pokud se komukoli podaří vložit doplňky (například změnou názvů vašich formulářových vstupů), nebude předán do vaší databáze.

Také bych vám doporučil, abyste přestali používat Mysql_* , je zastaralý . Měli byste se podívat na MySQLi nebo CHOP jako alternativy.




  1. Mám zakázat přísný režim MySQL?

  2. #1115 - Neznámá znaková sada:'utf8mb4'

  3. Oříznutí času od data a času – pokračování

  4. MySQL pro Visual Studio 2012/2013