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

Perbarui baris setelah mysql pilih foreach

Masalah pertama, Anda sama sekali tidak memanfaatkan pernyataan yang disiapkan. Gunakan parameter (? dalam kueri) lalu isi dengan nilai di execute() panggilan.

Juga, siapkan kueri Anda di luar loop, dan jalankan di dalam. Ini adalah salah satu keuntungan utama dari menyiapkan pernyataan di muka, ada lebih sedikit overhead jika hanya disiapkan sekali.

Terakhir, tidak perlu memeriksa database sebelum kueri Anda dan kemudian menjalankan salah satu dari dua kueri. Biarkan MySQL memeriksa apakah nilainya sudah ada dengan INSERT...ON DUPLICATE KEY UPDATE sintaksis. Ini bergantung pada database yang diatur dengan benar, jadi harus ada UNIQUE indeks di (session.usr_id, session.site_id) .

Ini belum teruji, tetapi akan membantu Anda:

$stmt1 = $handler->prepare("SELECT id,comments,likes,views FROM sites WHERE usr_id = ?");
$stmt2 = $handler->prepare("INSERT INTO session SET comments = ?, likes = ?, views = ?, usr_id = ?, site_id = ? ON DUPLICATE KEY UPDATE comments = VALUES(comments), likes = VALUES(likes), views = VALUES(views)");

$stmt1->execute(array($usr_id));
while($row = $stmt1->fetch(PDO::FETCH_ASSOC)) {
    $site_id = $row["id"];
    $stmt2->execute(array($comments, $likes, $views, $usr_id, $site_id));
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menggunakan Peran yang Telah Berubah di MySQL 8.0

  2. Tidak dapat memuat plugin autentikasi 'caching_sha2_password'

  3. Cara mengoptimalkan kueri besar dengan subkueri berulang

  4. Bagaimana cara memasukkan kueri sql ke dalam array di yii

  5. Rails, MySQL dan Snow Leopard