Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah saya boleh menggabungkan teks dan nilai dengan selamat semasa membina pertanyaan SQL dalam Go?

Bagaimanakah saya boleh menggabungkan teks dan nilai dengan selamat semasa membina pertanyaan SQL dalam Go?

Patricia Arquette
Lepaskan: 2024-10-26 15:48:02
asal
554 orang telah melayarinya

How can I safely concatenate text and values when constructing SQL queries in Go?

Menggabungkan Teks dan Nilai dalam Pertanyaan SQL Go

Apabila membina pertanyaan SQL teks dalam Go, terdapat peraturan sintaks tertentu yang perlu dipatuhi semasa menggabungkan komponen rentetan dan nilai, terutamanya apabila menggunakan integer.

Dalam kod Python yang disediakan, pendekatan tuple tidak sah dalam Go dan percubaan menghantar parameter sebagai rentetan akan mengakibatkan ralat tidak padan jenis.

Cara idiomatik untuk mencapai ini dalam Go ialah menggunakan fmt.Sprintf untuk memformat rentetan pertanyaan. Ini membolehkan anda membenamkan nilai dalam rentetan pada masa jalan:

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

Di sini, pemegang tempat %d dan %s masing-masing mewakili nilai integer dan rentetan, yang kemudiannya diberikan semasa panggilan db.Query:

<code class="go">rows, err := db.Query(query, val1, val2)</code>
Salin selepas log masuk

Pendekatan ini memastikan bahawa nilai diformat dengan betul dan menghalang kelemahan suntikan SQL.

Mengelakkan SQL Injection

Adalah penting untuk ambil perhatian bahawa penggabungan rentetan dalam pertanyaan SQL boleh membawa kepada kelemahan suntikan. Untuk mengurangkan risiko ini, gunakan penyata yang disediakan dan pertanyaan berparameter. Dengan menghantar nilai sebagai parameter, anda boleh menghalang input berniat jahat daripada mengubah suai pertanyaan SQL yang dimaksudkan.

Sebagai contoh:

<code class="go">stmt, err := db.Prepare(`SELECT columnA FROM tableA WHERE columnB = ? AND columnB = ?`)
rows, err := stmt.Query(val1, val2)</code>
Salin selepas log masuk

Dengan menggunakan pernyataan yang disediakan, anda boleh melindungi aplikasi anda daripada input SQL yang berniat jahat sambil mengekalkan kemudahan membina pertanyaan dinamik.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggabungkan teks dan nilai dengan selamat semasa membina pertanyaan SQL dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan