Mantap, ini error klasik tapi sangat penting dipahami 👍
Justru dari sini pemahaman OOP + MySQLi kamu akan naik level.
🔴 ERROR YANG TERJADI
Fatal error: Call to undefined function mysqli_stmt_get_result()
Artinya bukan salah OOP kamu, tapi lingkungan PHP-nya.
1️⃣ PENYEBAB UTAMA (INI INTINYA)
Fungsi:
Salin kode
Php
mysqli_stmt_get_result()
👉 HANYA ADA kalau PHP kamu terpasang mysqlnd (MySQL Native Driver).
Banyak server lokal (terutama XAMPP lama / Linux tertentu) TIDAK AKTIF mysqlnd.
Makanya:
Di template Spruha → bisa (mungkin beda server / versi)
Di AdminLTE / project ini → gagal
2️⃣ BUKTI NYATA
Error menunjuk ke:
Salin kode
Text
models/Buku.php on line 17
Yang isinya kira-kira:
Salin kode
Php
return mysqli_stmt_get_result($stmt);
➡️ PHP kamu tidak mengenal fungsi itu sama sekali.
3️⃣ SOLUSI PALING AMAN & PROFESIONAL (DISARANKAN)
👉 JANGAN pakai mysqli_stmt_get_result()
Gunakan cara binding manual
✔ kompatibel di semua server
✔ lebih “low level”
✔ sering dipakai di production
4️⃣ PERBAIKAN CLASS Buku.php (FIX TOTAL)
❌ SALAH (punyamu sekarang)
Salin kode
Php
mysqli_stmt_execute($stmt);
return mysqli_stmt_get_result($stmt);
✅ BENAR (AMAN DI SEMUA SERVER)
Salin kode
Php
public function getAll() {
$query = "SELECT id, judul, pengarang, penerbit, tahunterbit FROM buku";
$stmt = mysqli_prepare($this->conn, $query);
mysqli_stmt_execute($stmt);
// binding hasil query
mysqli_stmt_bind_result(
$stmt,
$id,
$judul,
$pengarang,
$penerbit,
$tahunterbit
);
$data = [];
while (mysqli_stmt_fetch($stmt)) {
$data[] = [
'id' => $id,
'judul' => $judul,
'pengarang' => $pengarang,
'penerbit' => $penerbit,
'tahunterbit' => $tahunterbit
];
}
return $data;
}
📌 Perhatikan
Sekarang:
Return = array
Bukan result mysqli lagi
5️⃣ PERUBAHAN DI FILE tampilBuku.php
❌ DULU (pakai mysqli_fetch_assoc)
Salin kode
Php
while($row = mysqli_fetch_assoc($dataBuku)) {
✅ SEKARANG (karena sudah array)
Salin kode
Php
<?php foreach ($dataBuku as $row): ?>
<tr>
<td><?= $row['judul']; ?></td>
<td><?= $row['pengarang']; ?></td>
<td><?= $row['penerbit']; ?></td>
<td><?= $row['tahunterbit']; ?></td>
</tr>
<?php endforeach; ?>
6️⃣ KENAPA CARA INI LEBIH “OOP”?
✔ Model return data bersih
✔ View tidak tahu SQL
✔ Tidak tergantung mysqlnd
✔ Lebih mudah di-test
✔ Aman dipakai di server mana pun
7️⃣ OPSI ALTERNATIF (KALAU MAU)
Kalau kamu MAU tetap pakai mysqli_stmt_get_result(), syaratnya:
PHP ≥ 5.4
mysqlnd aktif
Cek dengan:
Salin kode
Php
phpinfo();
Cari:
Salin kode
mysqlnd enabled
Tapi untuk belajar OOP yang benar → jangan tergantung ini.
8️⃣ RINGKASAN SINGKAT
Masalah
Solusi
mysqli_stmt_get_result error
mysqlnd tidak aktif
Cara aman
mysqli_stmt_bind_result
Return model
array
View
foreach
🔥 NEXT STEP (LANJUTAN LOGIS)
Kalau kamu mau, aku bisa lanjutkan:
1️⃣ UPDATE data buku (OOP + prepared)
2️⃣ DELETE buku (aman)
3️⃣ Edit form → readonly → enable (full OOP)
4️⃣ Gabung ke AdminLTE dengan benar
Tinggal jawab:
LANJUT UPDATE OOP
Desember 21, 2025



0 komentar:
Posting Komentar