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

Jalan pintas untuk memperbarui baris tabel di database?

Lebih banyak kueri berarti lebih banyak waktu, jadi jika Anda memperbarui setiap bidang satu per satu (bukan satu baris dalam satu waktu), itu akan memakan waktu lebih lama secara signifikan.

Selain itu, Anda mungkin ingin menerapkan filter ke nilai yang dikirimkan untuk memastikan bahwa tidak ada bidang yang tidak ingin Anda perbarui.

Misalnya, jika Anda memiliki tabel pengguna yang memiliki saldo akun yang terdaftar terhadap mereka:

id | user       | credit
==========================
1  | John Smith | 50

Jika saya dapat mengirimkan formulir ke pengendali formulir Anda, karena bidang "kredit" akan muncul di SHOW COLUMNS... permintaan, saya dapat mengirimkan kiriman POST kepada Anda, melalui formulir yang dimaksudkan untuk digunakan bagi saya untuk mengubah nama saya, dengan $_POST['user'] = "Mike Rowe" dan $_POST['credit'] = 9999 , dan Anda akan mengubah di atas menjadi:

id | user       | credit
==========================
1  | Mike Rowe  | 9999

PERBARUI: Solusi yang disarankan

Daripada percaya bahwa nama bidang database aman digunakan untuk menangani kueri seperti ini, mengapa tidak memiliki larik bidang Anda sendiri yang dapat diedit dan hanya mengulangnya?

$editable_fields = array(
  'pg_url' ,
  'pg_title' ,
  ...
);

$form_values = array();
$sql_pattern = array();
foreach( $editable_fields as $k ){
  if( $k != 'pg_id'
      && isset( $_POST[$k] ) ){
    $form_values[$k] = $_POST[$k];
    // NOTE: You could use a variant on your above code here, like so
    // $form_values[$k] = set_variable( $_POST , $k );
    $sql_pattern[] = "$k = ?";
  }
}

$sql_pattern = 'UPDATE root_pages SET '.implode( ' , ' , $sql_pattern ).' WHERE pg_id = ?';

# use the instantiated db connection object from the init.php, to process the query
$result = $connection->run_query($sql_pattern,array_merge(
    $form_values ,
    $_POST['pg_id']
    ));

CATATAN:Kode ini belum diuji dan bukan cara saya biasanya beroperasi, jadi gunakan sebagai panduan, bukan alkitab...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. redirect 404 ke url serupa

  2. Bagaimana cara mengatur Hibernate untuk membaca/menulis ke sumber data yang berbeda?

  3. Kinerja MySQL:Mengidentifikasi Pertanyaan Panjang

  4. php mysql perintah UPDATE tidak akan diperbarui

  5. Cara menginstal MySQL 5.7 di Amazon ec2