Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Pertanyaan SQL Parameter Saya Melemparkan Ralat 'tidak semua argumen ditukar semasa pemformatan rentetan'?

Mengapa Pertanyaan SQL Parameter Saya Melemparkan Ralat 'tidak semua argumen ditukar semasa pemformatan rentetan'?

DDD
Lepaskan: 2024-12-03 14:12:18
asal
204 orang telah melayarinya

Why Does My Parameterized SQL Query Throw a

Menyelesaikan Masalah Ralat Pertanyaan SQL Berparameter: Menyelesaikan "tidak semua argumen ditukar semasa pemformatan rentetan"

Apabila cuba melaksanakan pertanyaan SQL berparameter, pembangun boleh menghadapi ralat: "TypeError: tidak semua argumen ditukar semasa pemformatan rentetan." Isu ini biasanya timbul apabila menggunakan pemformatan rentetan untuk pertanyaan dengan parameter yang tidak mencukupi atau tidak diformat dengan betul.

Untuk menyelesaikan ralat ini, adalah penting untuk memastikan bahawa setiap pemegang tempat dalam rentetan yang diformatkan dipadankan dengan hujah yang sepadan dalam pertanyaan . Dalam coretan kod yang diberikan:

cur.execute("SELECT * FROM records WHERE email LIKE '%s'", search)
Salin selepas log masuk

Pemegang tempat '%s' dalam pertanyaan mewakili parameter yang akan digantikan dengan nilai dalam carian. Walau bagaimanapun, kaedah pelaksanaan menjangkakan senarai atau tuple yang mengandungi parameter. Untuk membetulkannya, pengubahsuaian berikut boleh dibuat:

cur.execute("SELECT * FROM records WHERE email LIKE %s", [search])
Salin selepas log masuk

Dengan membungkus carian dalam senarai, ia menjadi boleh lelar yang boleh dibongkar ke dalam parameter individu. Sintaks yang betul untuk melaksanakan pertanyaan berparameter dalam MySQLdb memerlukan parameter dihantar sebagai senarai.

Pelarasan mudah ini memastikan semua argumen ditukar dengan betul semasa pemformatan rentetan dan menghapuskan ralat yang disebutkan di atas. Sebagai alternatif, tuple (senarai tidak berubah) boleh digunakan dan bukannya senarai untuk menghantar parameter.

Atas ialah kandungan terperinci Mengapa Pertanyaan SQL Parameter Saya Melemparkan Ralat 'tidak semua argumen ditukar semasa pemformatan rentetan'?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan