Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membina Pertanyaan SQL Teks dengan Selamat dalam Go?

Bagaimana untuk Membina Pertanyaan SQL Teks dengan Selamat dalam Go?

Susan Sarandon
Susan Sarandonasal
2024-10-31 21:26:29235semak imbas

 How to Safely Construct Text SQL Queries in Go?

Cara Betul untuk Membina Pertanyaan SQL Teks dalam Go

Apabila menulis pertanyaan SQL teks dalam Go, anda mungkin menghadapi masalah semasa menggabungkan bahagian rentetan dengan nilai. Kaedah tradisional, seperti menggunakan ruang letak %d dan %s dalam rentetan, boleh membawa kepada ralat sintaks atau tidak sepadan jenis.

Penggabungan Gaya Python

Dalam Python, anda boleh menggabungkan rentetan dan nilai menggunakan operator % dalam rentetan petikan tiga kali ganda. Walau bagaimanapun, pendekatan ini tidak disokong dalam Go.

Go Equivalent

Untuk mencapai penggabungan serupa dalam Go, anda boleh menggunakan fungsi fmt.Sprintf. Ia memerlukan format rentetan sebagai hujah pertama dan hujah tambahan untuk ruang letak:

<code class="go">query := fmt.Sprintf(`SELECT columnA FROM tableA WHERE columnB = %d AND columnC = %s`,
                     someNumber, someString)</code>

Mencegah Kerentanan Suntikan

Semasa menggabungkan nilai ke dalam pertanyaan, adalah penting untuk mengelakkan kelemahan suntikan. Daripada menggunakan ruang letak dalam rentetan, pertimbangkan untuk menggunakan pernyataan yang disediakan:

<code class="go">query := `SELECT columnA FROM tableA WHERE columnB = ? AND columnC = ?`

rows, err := db.Query(query, val1, val2)</code>

Di sini, ? ruang letak mewakili nilai, dan val1 dan val2 dihantar sebagai argumen kepada db.Query. Kaedah ini memastikan keselamatan pertanyaan dan menghalang input berniat jahat daripada menjejaskan pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk Membina Pertanyaan SQL Teks dengan Selamat dalam Go?. 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