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!