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

bagaimana cara memperbarui satu atau lebih bidang dengan mengabaikan bidang kosong ke dalam database mysql?

Pertama, ingat untuk menghindari string yang datang kepada Anda melalui POST, GET, atau REQUEST (baca tentang serangan injeksi SQL jika Anda tidak yakin alasannya).

Sesuatu seperti ini mungkin berhasil:

$semaphore = false;
$query = "UPDATE contacts SET ";
$fields = array('tel','fax','email');
foreach ($fields as $field) {
   if (isset($_POST[$field]) and !empty($_POST[$field]) {
     $var = mysql_real_escape_string($_POST[$field]);
     $query .= uppercase($field) . " = '$var'";
     $semaphore = true;
   }
}

if ($semaphore) {
   $query .= " WHERE Cust_Name = '$cst'";
   mysql_query($query);
}

NB :Jangan pernah hanya mengulang array $_POST Anda untuk membuat pernyataan SQL. Lawan dapat menambahkan bidang POST tambahan dan mungkin menyebabkan kerusakan. Looping melalui array input pengguna juga dapat menyebabkan vektor injeksi:nama bidang perlu ditambahkan ke pernyataan, yang berarti mereka adalah vektor potensial. Teknik pencegahan injeksi standar (parameter pernyataan yang disiapkan, fungsi kutipan yang disediakan driver) tidak akan berfungsi untuk pengidentifikasi. Sebagai gantinya, gunakan daftar putih bidang untuk disetel, dan ulangi daftar putih atau teruskan larik input melalui daftar putih.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mencatat verbositas mysql 5.7

  2. Cara memasukkan data dalam model kumpulan bersarang (MySQL);

  3. Meniru klausa MySQL LIMIT di Microsoft SQL Server 2000

  4. Hubungan 'banyak ke dua'

  5. Konfigurasi Ketersediaan Tinggi untuk Node ClusterControl Menggunakan CMON HA