Rumah >Java >javaTutorial >Bolehkah Penyata Disediakan dalam MySQL Mengendalikan Nama Lajur Yang Ditentukan Secara Dinamik?

Bolehkah Penyata Disediakan dalam MySQL Mengendalikan Nama Lajur Yang Ditentukan Secara Dinamik?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-21 05:07:13182semak imbas

Can Prepared Statements in MySQL Handle Dynamically Specified Column Names?

Nama Lajur Pembolehubah dalam Penyata Disediakan

Isu:

Menggunakan pernyataan yang disediakan untuk memilih baris , bolehkah anda menentukan nama lajur yang dikembalikan menggunakan ini kaedah?

Konteks:

Berfungsi dengan MySQL dan Java, cuba memasukkan nama lajur sebagai parameter dalam pernyataan yang disediakan menghasilkan nama lajur yang disertakan sebagai literal rentetan dalam pertanyaan, bukan sebagai lajur sebenar names.

Penjelasan:

Pernyataan yang disediakan direka bentuk untuk menghalang suntikan SQL dengan membenarkan parameter ditentukan tanpa dimasukkan terus ke dalam rentetan pertanyaan. Walau bagaimanapun, mekanisme ini bertujuan untuk nilai parameter, bukan untuk mengubah suai pertanyaan itu sendiri.

Penyelesaian:

1. Pertimbangan Semula Reka Bentuk Pangkalan Data:

Elakkan daripada mendedahkan nama lajur terus kepada pengguna. Sebaliknya, pertimbangkan untuk menggunakan mekanisme yang berbeza, seperti mencipta lajur lain dalam pangkalan data untuk menyimpan nama lajur yang diingini bersama data.

2. Pembinaan Pertanyaan Manual:

Jika mengubah suai reka bentuk pangkalan data tidak dapat dilaksanakan, anda boleh membersihkan nama lajur input dan membina pertanyaan SQL secara manual. Gunakan kaedah String#replace() untuk melarikan diri daripada mana-mana contoh aksara petikan dalam nama lajur.

Kesimpulan:

Walaupun tidak mungkin untuk menentukan lajur yang dikembalikan nama sebagai parameter dalam pernyataan yang disediakan, terdapat pendekatan alternatif untuk mencapai fungsi yang diingini. Pastikan sanitasi input yang betul untuk mengelakkan kelemahan suntikan SQL.

Atas ialah kandungan terperinci Bolehkah Penyata Disediakan dalam MySQL Mengendalikan Nama Lajur Yang Ditentukan Secara Dinamik?. 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