Postingan lainnya
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
Jadi, saya punya error seperti yang tertera pada judul, yaitu " SQLSTATEparameter number: number of bound variables does not match number of tokens". Error tersebut terjadi saat saya mencoba untuk membuat fungsi update/edit data pada web saya.
Berikut isi kodingan dari info_kantin.php:
<div class="collapse card p-4 mt-3" id="edit_kantin">
<center> <h2 class="font-weight-light" style=" background-color: #4B6ED4; color: #fff; font-size: 25px; padding: 3px;">
<i class="fas ti-shopping-cart" aria-hidden="true"></i> Edit Info Kantin</h2></center>
<form action="../aksi/edit_kantin.php" method="post">
<div class="form-group">
<label for="nama">Nama Kantin:</label>
<input type="text" style="border-radius: 0px; border: 1px solid; #464545;" class="form-control" name="nama" id="nama" value="<?= $kantin->nama ?>" required>
</div>
<div class="form-group">
<label for="deskripsi">Deskripsi:</label>
<textarea class="form-control" style="border-radius: 0px; border: 1px solid; #464545;" name="deskripsi" id="deskripsi" cols="30" rows="10" required><?= $kantin->deskripsi ?></textarea>
</div>
<input type="submit" style="border-radius: 0px; border: 1px #4B6ED4; background: #4B6ED4; color: #fff;" class="btn" value="Edit">
</form>
</div>
Kodingan tersebut bertujuan untuk melakukan update/edit info pada kantin di web saya.
Kemudian di bawah ini adalah kodingan dari fungsi edit/update info kantin yang terletak di dalam file database.php yang memuat inisialisasi fungsi-fungsi di web saya, seperti untuk register, login, dsb.
public function editKantinFull($nama, $deskripsi)
{
try {
$query = $this->cont->prepare(
"UPDATE kantin
SET nama=:nama, deskripsi=:deskripsi WHERE id=:id"
);
$query->bindParam("nama", $nama, PDO::PARAM_STR);
$query->bindParam("deskripsi", $deskripsi, PDO::PARAM_STR);
$query->execute();
return $query->rowCount();
} catch (PDOException $e) {
exit($e->getMessage());
}
}
Lalu di bawah ini merupakan kodingan dari file edit_kantin.php:
<?php
require "checkpost.php";
require "../db/database.php";
$db = new Database();
$pass = $db->editKantinFull(
$_POST["nama"],
$_POST["deskripsi"]
);
$db->addAdminJournal($_POST["adminid"], "Edit kantin", 0, $_POST["id"]);
header("Location: ../admin/info_kantin.php?id=".$_POST["id"]);
die();
Terakhir, di bawah ini struktur dari tabel kantin di database saya:
--
-- Struktur dari tabel `kantin`
--
CREATE TABLE `kantin`
(
`id` int
(11) NOT NULL,
`id_kampus` int
(11) NOT NULL,
`nama` varchar
(255) NOT NULL,
`deskripsi` mediumtext NOT NULL,
`saldo` bigint
(20) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Tolong bantuan dan solusinya, kenapa bisa terjadi error seperti itu, dan bagaimana solusi atau kodingannya yang benar. By the way, di web saya memakai PHP yang PDO. Saya telah mencoba untuk mengatasi error tersebut, tapi tetap saja muncul error tersebut/sama. Silakan tuliskan kodingan/fungsi apa lagi dari anda yang perlu saya tulis di sini, misal minta diperlihatkan fungsi sekian.php dari saya. Terima kasih sebelumnya:)
2 Jawaban:
<div>Untuk :id nya di-bind dari mana ya ?</div>
<div>Di bagian </div><pre>function editKantinFull coba tambagkan satu parameter id dan bagian <strong>info_kantin.php pastikan ada input name=id</strong></pre>