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:)

avatar nfdilah

@nfdilah

1 Kontribusi 0 Poin


Jawaban

Untuk :id nya di-bind dari mana ya ?
avatar insanz01

@insanz01

85 Kontribusi 55 Poin


Di bagianΒ 
function editKantinFull coba tambagkan satu parameter id dan bagian  info_kantin.php pastikan ada input name=id
avatar solehrasta

@solehrasta

10 Kontribusi 0 Poin


Login untuk gabung berdiskusi
premium logo tube

Hey, sedang ada diskon premium untuk akses semua kelas. Lihat di sini