Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Saya Mendapat 'SQLSTATE[HY093]: Nombor parameter tidak sah' dalam Pertanyaan INSERT Berbilang Disediakan Saya?

Mengapa Saya Mendapat 'SQLSTATE[HY093]: Nombor parameter tidak sah' dalam Pertanyaan INSERT Berbilang Disediakan Saya?

Patricia Arquette
Patricia Arquetteasal
2024-12-09 00:25:10934semak imbas

Why Am I Getting

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!

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