Memasukkan teks yang mengandungi petikan tunggal ke dalam pangkalan data PostgreSQL memerlukan pengendalian yang teliti untuk mengelakkan ralat sintaks dan kelemahan keselamatan seperti suntikan SQL. Panduan ini menggariskan kaedah yang selamat dan berkesan.
Pendekatan paling mudah ialah menggandakan petikan tunggal dalam rentetan. Contohnya, untuk memasukkan "log pengguna", gunakan pertanyaan ini:
<code class="language-sql">INSERT INTO test VALUES (1, 'user''s log');</code>
Walaupun melarikan diri dengan garis miring ke belakang () adalah mungkin, ia kurang diutamakan dan harus dikhaskan untuk situasi yang menggandakan petikan tidak boleh dilaksanakan.
Untuk rentetan kompleks atau situasi dengan petikan bersarang, rentetan petikan dolar PostgreSQL menyediakan penyelesaian yang unggul. Disertakan dalam $$
, rentetan ini membolehkan pengendalian aksara khas yang lebih mudah, termasuk tanda dolar itu sendiri (yang perlu melarikan diri jika ada).
<code class="language-sql">$$escape ' with ''$$</code>
PostgreSQL menawarkan fungsi seperti quote_literal()
, quote_nullable()
dan format()
(dengan penentu %L
) untuk menjana rentetan yang dipetik secara automatik untuk pertanyaan SQL, menghapuskan pelarian manual dan mengurangkan risiko ralat.
<code class="language-sql">format('%L', string_var)</code>
Yang penting, teknik pelarian rentetan ini bukan pengganti untuk pernyataan yang disediakan atau pertanyaan berparameter. Kaedah ini adalah cara paling berkesan untuk menghalang serangan suntikan SQL dengan mengasingkan data daripada arahan SQL itu sendiri. Sentiasa utamakan pernyataan yang disediakan untuk interaksi pangkalan data yang selamat.
Atas ialah kandungan terperinci Bagaimanakah Saya Memasukkan Teks dengan Petikan Tunggal dengan Selamat ke dalam Pangkalan Data PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!