Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Saya Mendapat 'SQLSTATE[HY093]: Nombor parameter tidak sah' dalam Pertanyaan INSERT Berbilang Disediakan Saya?
Ralat Menyelesaikan "SQLSTATE[HY093]: Nombor parameter tidak sah" dalam Pertanyaan Sisipan Berbilang Disediakan
Apabila cuba melaksanakan pertanyaan sisipan berbilang, ralat menyatakan "SQLSTATE[HY093]: Nombor parameter tidak sah: parameter ialah tidak ditakrifkan" mungkin berlaku. Walaupun mempunyai kiraan padanan untuk tatasusunan parameter dan elemen data input, ralat ini berterusan.
Memahami Ralat
Ralat ini timbul disebabkan oleh ketidakpadanan antara bilangan elemen dalam tatasusunan parameter ($nilai) dan data input ($padanan). Apabila melaksanakan pernyataan yang disediakan, pertanyaan menjangkakan bilangan parameter tertentu dan sebarang percanggahan akan mengakibatkan ralat ini.
Menyelesaikan Isu
Untuk menyelesaikan isu ini, pastikan $values dimulakan sebelum memasuki gelung yang menjana parameter. Ini menghalang sebarang nilai sedia ada daripada menjejaskan kiraan. Selain itu, mengesahkan kewujudan indeks unik pada lajur "cincang" dalam pangkalan data akan terus menghalang kemungkinan konflik.
Kod Disemak
Berikut ialah kod yang disemak, menggabungkan semakan ini:
$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 Saya Mendapat 'SQLSTATE[HY093]: Nombor parameter tidak sah' dalam Pertanyaan INSERT Berbilang Disediakan Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!