SQL: Sisipan Bersyarat dan Kemas Kini
Panduan ini menunjukkan cara memasukkan atau mengemas kini baris pangkalan data dengan cekap secara bersyarat, berdasarkan kewujudan rekod padanan. Pendekatan sebelumnya mungkin gagal kerana sintaks yang tidak betul atau kekurangan kekangan pangkalan data. Penyelesaian ini menawarkan kaedah yang teguh dan selamat.
1. Tegakkan Keunikan:
Mulakan dengan memastikan kekangan unik wujud pada lajur yang berkaitan (cth., subs_email
dalam jadual subs
). Ini menghalang kemasukan pendua dan penting untuk logik bersyarat.
<code class="language-sql">ALTER TABLE subs ADD UNIQUE (subs_email);</code>
2. Leverage INSERT ... ON DUPLICATE KEY UPDATE
:
MySQL INSERT ... ON DUPLICATE KEY UPDATE
dengan elegan mengendalikan sisipan dan kemas kini bersyarat. Jika baris dengan kunci unik yang ditentukan sudah wujud, ia mengemas kini; jika tidak, ia memasukkan baris baharu.
<code class="language-sql">INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE subs_name = VALUES(subs_name), subs_birthday = VALUES(subs_birthday);</code>
Pemegang tempat ?
adalah penting untuk pengikatan parameter (diterangkan di bawah). Ia mewakili nilai untuk subs_name
, subs_email
dan subs_birthday
yang diekstrak daripada input aplikasi anda (mis., rentetan URL).
3. Ikatan Parameter Selamat:
Sentiasa gunakan pengikatan parameter untuk mengelakkan kelemahan suntikan SQL. Ini melibatkan penggunaan pernyataan yang disediakan dan lulus nilai sebagai parameter, dan bukannya membenamkannya secara langsung dalam rentetan SQL. Ini memastikan bahawa data yang dibekalkan pengguna dianggap sebagai data, bukan kod boleh laku. Pelaksanaan khusus bergantung pada pustaka pangkalan data anda (cth., executeUpdate()
dalam JDBC).
Pendekatan ini menggabungkan kekangan unik dengan pernyataan SQL yang berkuasa untuk menyediakan penyelesaian yang bersih, cekap dan selamat untuk sisipan dan kemas kini bersyarat.
Atas ialah kandungan terperinci Bagaimana untuk Melakukan INSERT atau UPDATE Bersyarat dalam SQL Berdasarkan Baris Sedia Ada?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!