Perbedaan mysqli_stmt_get_result dan mysqli_stmt_bind_result

Pengertian
mysqli_stmt_get_result (); merupakan fungsi yang digunakan untuk mendapatkan hasil dari prepare statement
mysqli_stmt_bind_result(); digunakan untuk mengikat variabel ke prepare statement untuk menyimpan hasil

Refrensi :
https://www.php.net/manual/en/mysqli-stmt.get-result.php
https://www.php.net/manual/en/mysqli-stmt.bind-result.php

Perbedaan
  1. Jika Anda menggunakan mysqli_stmt_get_result setelah data di fetch maka Anda perlu mendefinisikan nama – nama kolom yang terdapat di database jika data  ingin ditampilkan
  2. Sedangkan jika menggunakan mysqli_stmt_bind_result nama – nama kolom akan didefinisikan sebagai variabel sesuai dengan nama – nama kolom yang terdapat dalam database, ketika Anda ingin menampilkan data maka Anda hanya perlu menuliskan nama – nama variabel yang sudah didefinikasn didalam bind result
Rekomendasi
Dalam beberpa pengalaman, ada beberapa hosting yang bermasalah dengan penggunaan mysqli_stmt_get_result dimana mysqlnd driver di hosting tidak terinstal atau tidak ditemukan, intinya ada beberapa yang tidak support. Sehingga mungkin penggunaan mysqli_stmt_bind_result lebih direkomendasikan dibandingkan mysqli_stmt_get_result

Contoh
Kode dibawah ini mungkin akan bisa sedikit menggambarkan perbedaan antara mysqli_stmt_get_result dan mysqli_stmt_bind_result
  1. mysqli_stmt_get_result()
    <?php
    
    /*
    ROOT93.co.id | COMPUTER | NETWORKING | WEB PROGRAMMING
    */
    function detail_data($var_id){
     global $koneksi;
     global $result;
     $sql="SELECT id, nim, nama_mahasiswa, foto_mahasiswa,  tanggal_daftar FROM datamhs WHERE id=?";
     if($stmt=mysqli_prepare($koneksi, $sql)){
      mysqli_stmt_bind_param($stmt,"i",$param_id);
      $param_id = $var_id;
      if(mysqli_stmt_execute($stmt)){
       //get result bisa diganti jadi store result
       $result=mysqli_stmt_get_result($stmt);
       if(mysqli_num_rows($result)==1){
        return true; //jika ada data nilai true
       }else{
        return false; //jika data tidak ditemukan nilai false
       }
      }else{
       echo "Terjadi kesalahan";
      }
     }
     mysqli_stmt_close($stmt);
    }
    include ('koneksi.php');
    include ('function.php');
    ?>
    <html>
    <head>
     <title>DETAIL DATA ROOT93</title>
    </head>
    <body>
    
    <?php
    if(!empty($_GET['id'])){
    
     if(detail_data(trim($_GET['id']))){
      $row=mysqli_fetch_array($result);
     }else{
      die ("Data tidak ditemukan");
     }
    
    
    }else{
    
    
      die("error");
     
    }
    mysqli_close($koneksi);
    
    
    ?>
    <table border="1" width="500">
    <tr>
     <th>ID</th>
     <th>NAMA MAHASISWA</th>
     <th>NIM</th>
     <th>TANGGAL DAFTAR</th>
    </tr>
    <tr>
     <td><?php echo $row['id'];?></td>
     <td><?php echo $row['nama_mahasiswa'];?></td>
     <td><?php echo $row['nim'];?></td>
     <td><?php echo $row['tanggal_daftar'];?></td>
    </tr>
    <a href="javascript:history.back()">Kembali</a>
    </form>
    </body>
    </html>
  2. mysqli_stmt_bind_result()
    
    <?php
    /*
    ROOT93.co.id | COMPUTER | NETWORKING | WEB PROGRAMMING
    */
    function detail_data_2($var_id){
     global $koneksi;
     global $id, $nim, $nama_mahasiswa, $foto_mahasiswa, $tanggal_daftar;
     $sql="SELECT id, nim, nama_mahasiswa, foto_mahasiswa,  tanggal_daftar FROM datamhs WHERE id=?";
     if($stmt=mysqli_prepare($koneksi, $sql)){
      mysqli_stmt_bind_param($stmt,"i",$param_id);
      $param_id = $var_id;
      if(mysqli_stmt_execute($stmt)){
       mysqli_stmt_store_result($stmt);
       mysqli_stmt_bind_result($stmt, $id, $nim, $nama_mahasiswa, $foto_mahasiswa, $tanggal_daftar);
       mysqli_stmt_fetch($stmt);
       if(mysqli_stmt_num_rows($stmt)==1){
        return true; //jika ada data nilai true
       }else{
        return false; //jika data tidak ditemukan nilai false
       }
      }else{
       echo "Terjadi kesalahan";
      }
     }
     mysqli_stmt_close($stmt);
    }
    include ('koneksi.php');
    include ('function.php');
    ?>
    <html>
    <head>
     <title>DETAIL DATA ROOT93</title>
    </head>
    <body>
    
    <?php
    if(!empty($_GET['id'])){
    
     if(!detail_data_2(trim($_GET['id']))){
      
      die ("Data tidak ditemukan");
     }
    
    
    }else{
    
    
      die("error");
     
    }
    mysqli_close($koneksi);
    
    
    ?>
    <table border="1" width="500">
    <tr>
     <th>ID</th>
     <th>NAMA MAHASISWA</th>
     <th>NIM</th>
     <th>TANGGAL DAFTAR</th>
    </tr>
    <tr>
     <td><?php echo $id;?></td>
     <td><?php echo $nama_mahasiswa;?></td>
     <td><?php echo $nim; ?></td>
     <td><?php echo $tanggal_daftar;?></td>
    </tr>
    <a href="javascript:history.back()">Kembali</a>
    </form>
    </body>
    </html>



Lihat source lengkapnya untuk latihan pada halaman : CRUD PHP Procedural Style

0 Response to "Perbedaan mysqli_stmt_get_result dan mysqli_stmt_bind_result"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin