Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Contoh cara menggunakan bind_result vs get_result

Faktor penentu bagi saya, adalah apakah saya memanggil kolom kueri saya menggunakan * .

Menggunakan bind_result() akan lebih baik untuk ini:

// Use bind_result() with fetch()
$query1 = 'SELECT id, first_name, last_name, username FROM table WHERE id = ?';

Menggunakan get_result() akan lebih baik untuk ini:

// Use get_result() with fetch_assoc() 
$query2 = 'SELECT * FROM table WHERE id = ?';

Contoh 1 untuk $query1 menggunakan bind_result()

$query1 = 'SELECT id, first_name, last_name, username FROM table WHERE id = ?';
$id = 5;

if($stmt = $mysqli->prepare($query)){
   /*
        Binds variables to prepared statement

        i    corresponding variable has type integer
        d    corresponding variable has type double
        s    corresponding variable has type string
        b    corresponding variable is a blob and will be sent in packets
   */
   $stmt->bind_param('i',$id);

   /* execute query */
   $stmt->execute();

   /* Store the result (to get properties) */
   $stmt->store_result();

   /* Get the number of rows */
   $num_of_rows = $stmt->num_rows;

   /* Bind the result to variables */
   $stmt->bind_result($id, $first_name, $last_name, $username);

   while ($stmt->fetch()) {
        echo 'ID: '.$id.'<br>';
        echo 'First Name: '.$first_name.'<br>';
        echo 'Last Name: '.$last_name.'<br>';
        echo 'Username: '.$username.'<br><br>';
   }

   /* free results */
   $stmt->free_result();

   /* close statement */
   $stmt->close();
}

/* close connection */
$mysqli->close();

Contoh 2 untuk $query2 menggunakan get_result()

$query2 = 'SELECT * FROM table WHERE id = ?'; 
$id = 5;

if($stmt = $mysqli->prepare($query)){
   /*
        Binds variables to prepared statement

        i    corresponding variable has type integer
        d    corresponding variable has type double
        s    corresponding variable has type string
        b    corresponding variable is a blob and will be sent in packets
   */
   $stmt->bind_param('i',$id);

   /* execute query */
   $stmt->execute();

   /* Get the result */
   $result = $stmt->get_result();

   /* Get the number of rows */
   $num_of_rows = $result->num_rows;



   while ($row = $result->fetch_assoc()) {
        echo 'ID: '.$row['id'].'<br>';
        echo 'First Name: '.$row['first_name'].'<br>';
        echo 'Last Name: '.$row['last_name'].'<br>';
        echo 'Username: '.$row['username'].'<br><br>';
   }

   /* free results */
   $stmt->free_result();

   /* close statement */
   $stmt->close();
}

/* close connection */
$mysqli->close();

Seperti yang Anda lihat, Anda tidak dapat menggunakan bind_result dengan * . Namun, get_result bekerja untuk keduanya, tetapi bind_result lebih sederhana dan menghilangkan beberapa kekacauan dengan $row['name'] .

bind_result()

Pro:

  • Sederhana
  • Tidak perlu repot dengan $row['name']
  • Menggunakan fetch()

Kekurangan:

  • Tidak bekerja dengan kueri SQL yang menggunakan *

get_result()

Pro:

  • Bekerja dengan semua pernyataan SQL
  • Menggunakan fetch_assoc()

Kekurangan:

  • Harus dipusingkan dengan variabel array $row[]
  • Kurang rapi
  • memerlukan driver asli MySQL (mysqlnd )


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara membatalkan operasi INSERT di pemicu MySql?

  2. SELECT / GROUP BY - segmen waktu (10 detik, 30 detik, dll)

  3. Terhubung ke server MySQL melalui SSH di PHP

  4. Migrasi Langsung Menggunakan Replikasi MySQL

  5. Bagaimana cara melakukan pencocokan fuzzy nama perusahaan di MYSQL dengan PHP untuk pelengkapan otomatis?