Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memasukkan Teks dengan Petikan Tunggal ke dalam Pangkalan Data PostgreSQL dengan Selamat?

Bagaimana untuk Memasukkan Teks dengan Petikan Tunggal ke dalam Pangkalan Data PostgreSQL dengan Selamat?

Patricia Arquette
Patricia Arquetteasal
2025-01-23 14:17:10764semak imbas

How to Safely Insert Text with Single Quotes into a PostgreSQL Database?

Sisipkan teks yang mengandungi petikan tunggal dengan selamat ke dalam pangkalan data PostgreSQL

Memasukkan teks yang mengandungi petikan tunggal ke dalam jadual pangkalan data PostgreSQL boleh menjadi rumit dan cuba melakukannya secara langsung boleh mengakibatkan ralat. Untuk mengendalikan perkara ini dengan berkesan, pastikan anda menggunakan mekanisme melarikan diri untuk memastikan pangkalan data mentafsir petikan tunggal dengan betul.

Masalah suntikan rentetan petikan tunggal:

<code class="language-sql">insert into test values (1,'user's log');</code>

Di sini, ralat berlaku disebabkan petikan tunggal yang tidak seimbang dalam rentetan. Untuk membetulkannya, anda boleh melepaskan petikan tunggal dengan menggandakannya, seperti ini:

<code class="language-sql">insert into test values (1,'user''s log');</code>

Escape petikan tunggal:

Kaedah ini biasanya digunakan untuk melepaskan petikan tunggal dalam PostgreSQL. Dengan menggandakan petikan, anda memberitahu pangkalan data bahawa ia harus dianggap sebagai sebahagian daripada rentetan, bukan sebagai pembatas. Sebagai alternatif, anda boleh menggunakan aksara sengkang ke belakang untuk melepaskan petikan tunggal:

<code class="language-sql">insert into test values (1,E'user\'s log');</code>

Rentetan petikan dolar:

Jika anda berhadapan dengan pelbagai peringkat rentetan melarikan diri atau kompleks, rentetan petikan dolar menyediakan penyelesaian yang lebih bersih dan mudah dibaca. Untuk memetik rentetan dengan tanda dolar, sertakan rentetan itu dengan tanda dolar ($):

<code class="language-sql">insert into test values (1,$'user's log'$);</code>

Fungsi untuk melepaskan nilai:

PostgreSQL juga menyediakan fungsi khusus untuk nilai melarikan diri. Fungsi ini termasuk:

  • quote_literal(): Melarikan diri daripada rentetan untuk digunakan dalam pertanyaan.
  • quote_nullable(): Melarikan diri daripada rentetan untuk mengendalikan input kosong dengan mengeluarkan NULL sebagai rentetan tidak disebut.

Contoh:

<code class="language-sql">insert into test values (1,quote_literal('user's log'));</code>

Gunakan mekanisme melarikan diri SQL:

Ya, adalah mungkin untuk memasukkan teks yang mengandungi petikan tunggal ke dalam PostgreSQL menggunakan mekanisme SQL escape. Kaedah yang diterangkan di atas, seperti menggandakan petikan tunggal atau memetik rentetan dengan tanda dolar, dianggap sebagai mekanisme melarikan diri SQL yang sah.

Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Teks dengan Petikan Tunggal ke dalam Pangkalan Data PostgreSQL dengan Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn