Tutorial PHP: Prepared Statements Mysqli

Tutorial PHP: Prepared Statements Mysqli

Prepared Statements Mysqli

Prepared Statements Mysqli

Pada tutorial PHP kali ini, kami akan membahas mengenai pengertian prepared statements dan cara penggunaan prepared statements dengan mysqli.

Seperti yang kita tahu PHP mendukung fitur prepared statements pada mysqli extension dan PDO. Fitur ini juga umum digunakan dalam pemrograman PHP lanjutan seperti framework PHP. Karena hal itulah, penting bagi kita untuk memahami cara penggunaannya.

Prepared statements adalah sebuah fitur yang disediakan mysql (dan juga beberapa aplikasi database lainnya), di mana kita bisa mengirim query secara terpisah antara query inti dengan data dari query. Tujuannya, agar query menjadi lebih aman dan cepat.

Sebagai perbandingan, untuk menampilkan data mysql menggunakan fungsi mysqli_query(), kita membuat seluruh query dalam satu string dan langsung mengirimkannya ke mysql server, sebagai berikut:

1

2

$result=mysqli_query(“SELECT * FROM mahasiswa_phphosting WHERE

nama=’Neil Situmorang'”);

Dengan prepared statements, query tersebut akan dipisah antara perintah query: “SELECT…” dengan datanya yakni “Neil Situmorang”.

Proses Pembuatan Prepared Statement Mysql

Proses pembuatan prepared statements membutuhkan tiga langkah: prepared, bind, dan execute. Pada proses pertama yaitu prepared, kita mempersiapkan query yang akan dijalankan, tetapi tanpa data. Bagian di mana data berada digantikan dengan tanda tanya (?), seperti berikut ini:

1 “SELECT * FROM mahasiswa_phphosting WHERE nama=?”

atau

1 “INSERT INTO mahasiswa_phphosting VALUES (?, ?, ?, ?, ?)”

Secara teknis, query di atas akan langsung di kirim PHP ke mysql server. Di dalam mysql, perintah tersebut disimpan untuk sementara menunggu proses berikutnya, bind.

Proses kedua adalah bind. Dalam tahap ini, kita akan mengirimkan data yang telah ditandai dalam proses prepare. Data di sini adalah bagian yang diberi tanda (?.) Jika di dalam proses prepare hanya butuh satu data, kita mengirimkan satu data. Tetapi jika kita butuh lima data, kita mengirimkan lima data (sesuai dengan query yang ditulis dalam tahap prepare).

Setelah proses prepare dan bind, berikutnya adalah prepared statement (execute). Kenapa harus menggunakan prepared statements?

Keuntungan terbesar dari penggunaan prepared statements adalah dalam hal keamanan. Untuk aplikasi nyata, bagian data dari suatu query biasanya berasal dari user. Seorang user yang jahil bisa saja menambahkan perintah SQL pada kotak inputan username. Metoda ini dikenal juga dengan SQL injection. Dengan memisahkan perintah query dari datanya, kita bisa mencegah penyisipan query.

Cara Penggunaan Prepared Statements Mysqli

Pembahasan mengenai prepared statements cukup panjang dan akan kami bahas secara bertahap pada tutorial berikutnya. Sebagai gambaran, berikut adalah contoh kode program untuk menampilkan data mahasiswa dari tabel mahasiswa_phphosting menggunakan prepared statement mysqli.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

<?php

// buat koneksi dengan MySQL, gunakan database: universitas

$link = mysqli_connect(‘localhost’, ‘root’, ”, ‘universitas’);

 

// cek koneksi

if (!$link) {

die(‘Koneksi Error : ‘.mysqli_connect_errno().

‘ – ‘.mysqli_connect_error());

}

 

// buat prepared statements

$stmt = mysqli_prepare($link, “SELECT * FROM mahasiswa_phphosting WHERE nama=?”);

 

// siapkan “data” query

$nama_mhs=”Neil Situmorang”;

 

// hubungkan “data” dengan prepared statements: bind

mysqli_stmt_bind_param($stmt, “s”, $nama_mhs);

 

// jalankan query: execute

mysqli_stmt_execute($stmt);

 

// cek hasil query

if (!$stmt) {

die(‘Query Error : ‘.mysqli_errno($link).

‘ – ‘.mysqli_error($link));

}

 

// ambil hasil query

$result=mysqli_stmt_get_result($stmt);

 

// tampilkan hasil query

while ($row= $result->fetch_row()) {

echo “$row[0] $row[1] $row[2] $row[3] $row[4]”;

echo “<br />”;

}

 

// tutup statements

mysqli_stmt_close($stmt);

 

// tutup koneksi

mysqli_close($link);

?>

Jika kode program di atas dijalankan, hasilnya adalah sebagai berikut:

1 099145055 Neil Situmorang 22 Medan 1.90

Demikianlah pembahasan singkat mengenai prepared statements mysqli. Semoga bermanfaat.

You may also like...