Dalam kod yang disediakan, ralat timbul apabila melaksanakan pertanyaan sisipan berbilang disebabkan oleh ketidakpadanan parameter antara nilai yang dimasukkan dan bilangan parameter yang dijangkakan dalam pertanyaan.
Kod menjana tatasusunan pemegang tempat ($nilai) berdasarkan kiraan padanan ($perlawanan). Walau bagaimanapun, jika sudah ada kandungan dalam tatasusunan $values, ia boleh membawa kepada percanggahan dalam kiraan, menyebabkan ralat.
Untuk menangani isu ini:
Sentiasa mulakan tatasusunan $values kepada keadaan kosong sebelum menggunakannya dalam gelung.
$values = [];
$matches = array('1'); $count = count($matches); $values = []; for($i = 0; $i < $count; ++$i) { $values[] = '(?)'; } $sql = "INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash=values(hash)"; $stmt = $dbh->prepare($sql); $data = $stmt->execute($matches);
Dengan melaksanakan perubahan ini, kod harus dilaksanakan dengan jayanya tanpa menghadapi ketidakpadanan parameter ralat.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'Nombor Parameter Tidak Sah' dalam MySQL Multiple INSERT Queries?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!