sql >> Database teknologi >  >> RDS >> Mysql

Sådan genereres dynamisk MYSQL UPDATE-sætning baseret på definerede variabler fra HTML FORM

Hvis vi antager, at alle feltnavnene i tabellen er de samme som navnene på dine formularinput, er dette ligetil. Du kan bruge dette:

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

For at være mere sikker bør du oprette en hvidliste over accepterede parametre, dvs. kolonnerne i din tabel som denne:

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

På den måde kan din forespørgsel kun indeholde parametre, du indstiller, og hvis nogen formår at injicere ekstramateriale (f.eks. ved at ændre navnene på dine formularinputs), vil den ikke blive videregivet til din database.

Jeg vil også anbefale dig at stoppe med at bruge Mysql_* , den er udfaset . Du bør se på MySQLi eller PDO som alternativer.




  1. Sphinx Search mysql-klient på produktionsserver

  2. php + mysql + google map

  3. RowGen v3 automatiserer generering af databasetestdata

  4. Sådan opretter du en ikke-nul kolonne i en visning