Ralat Tidak Dijangka dalam Pertanyaan Sisip Berbilang
Coretan kod cuba menyediakan dan melaksanakan pertanyaan SQL untuk memasukkan berbilang nilai ke dalam jadual. Walau bagaimanapun, pelaksanaan gagal dengan ralat "SQLSTATE[HY093]: Nombor parameter tidak sah: parameter tidak ditakrifkan."
Punca Ralat
Ralat berlaku kerana bilangan elemen dalam tatasusunan $values tidak sepadan dengan bilangan elemen dalam tatasusunan $matches. Pertanyaan SQL menjangkakan bilangan parameter tertentu, tetapi kod PHP menyediakan nombor yang berbeza.
Penyelesaian
Untuk menyelesaikan ralat, pastikan $values dan $ tatasusunan padanan mengandungi bilangan elemen yang sama. Ini boleh dicapai dengan memulakan tatasusunan $values sebelum gelung.
Selain itu, disyorkan untuk menyemak sama ada lajur cincang mempunyai indeks yang unik. Jika tidak, klausa ON DUPLICATE KEY UPDATE mungkin tidak berfungsi seperti yang diharapkan.
Kod Disemak
$matches = array('1'); $count = count($matches); $values = []; for($i = 0; $i < $count; ++$i) { $values[] = '(?)'; } // INSERT INTO DATABASE $sql = "INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash=values(hash)"; $stmt = $dbh->prepare($sql); $data = $stmt->execute($matches);
Atas ialah kandungan terperinci Mengapa Pertanyaan INSERT SQL Berbilang Saya Gagal dengan 'SQLSTATE[HY093]: Nombor parameter tidak sah'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!