Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara menghasilkan pernyataan MYSQL UPDATE secara dinamis berdasarkan variabel yang ditentukan dari FORMULIR HTML

Dengan asumsi bahwa semua nama bidang dalam tabel sama dengan nama input formulir Anda, ini langsung. Anda dapat menggunakan ini:

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

Agar lebih aman, Anda harus membuat daftar putih parameter yang diterima, yaitu kolom di tabel Anda seperti ini:

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

Dengan cara itu, kueri Anda hanya dapat berisi parameter yang Anda tetapkan, dan jika ada yang berhasil memasukkan tambahan (misalnya dengan mengubah nama input formulir Anda), itu tidak akan diteruskan ke database Anda.

Saya juga menyarankan Anda berhenti menggunakan Mysql_* , itu tidak digunakan lagi . Anda harus melihat MySQLi atau PDO sebagai alternatif.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Koneksi Database CakePHP Mysql tidak ada, atau tidak dapat dibuat

  2. Jalankan pernyataan dengan pintasan di MySQLWorkbench

  3. Hitung baris di mysql berdasarkan grup

  4. Perbedaan antara Encoding dan collation?

  5. Menyimpan hasil pernyataan yang disiapkan sebagai tabel di mysql?