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

Mengapa Pertanyaan MySQL Parameter Saya Melemparkan 'TypeError: tidak semua argumen ditukar semasa pemformatan rentetan'?

Linda Hamilton
Linda Hamiltonasal
2024-12-03 04:58:09244semak imbas

Why Does My Parameterized MySQL Query Throw a

Pertanyaan SQL Berparameter: Menavigasi "TypeError: tidak semua argumen ditukar semasa pemformatan rentetan"

Dalam MySQLdb, melaksanakan pertanyaan SQL berparameter boleh membawa kepada a "TypeError: tidak semua argumen ditukar semasa pemformatan rentetan." Ralat ini berlaku apabila pertanyaan menjangkakan bilangan argumen tertentu, tetapi argumen yang diberikan tidak sepadan dengan jangkaan.

Untuk membetulkan ralat ini, gantikan sintaks warisan dengan pendekatan yang lebih moden. Daripada menggunakan:

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

Gunakan sintaks ini:

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

Parameter kedua dalam execute() kini ialah senarai yang mengandungi argumen yang hendak ditukar. Setiap argumen dalam senarai ini mesti boleh ditukar kepada jenis data yang dijangkakan dalam pertanyaan. Dalam kes ini, pertanyaan menjangkakan rentetan, jadi carian perlu disertakan dalam senarai satu elemen.

Atas ialah kandungan terperinci Mengapa Pertanyaan MySQL Parameter Saya Melemparkan 'TypeError: tidak semua argumen ditukar semasa pemformatan rentetan'?. 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