Mysqli Prepared Statements: Cara Menginput Data

Mysqli Prepared Statements: Cara Menginput Data

Mysqli Prepared Statements: Cara Menginput Data

Mysqli Prepared Statements: Cara Menginput Data

Jika pada tutorial sebelumnya kami pernah membahas mengenai cara menampilkan data dengan mysqli prepared statements, dalam tutorial kali ini kami akan mengulas tentang cara menginput data menggunakan mysqli prepared statements.

Menginput Data dengan Mysqli Prepared Statements

Apa yang membedakan cara menginput data dan menampilkan data menggunakan prepared statements? Perbedannya, terletak pada cara penanganan query. Apabila dalam menampilkan data kita menggunakan perintah SELECT, maka untuk menginput data kita menggunakan query INSERT.

Fitur keamanan yang diberikan oleh prepared statements membuatnya cocok digunakan untuk perintah yang akan mengubah isi tabel seperti perintah INSERT atau UPDATE. Selain itu, penggunaan prepared statement untuk proses input data yang berulang juga akan mempercepat proses eksekusi.

Dalam contoh kasus kali ini, kami akan menambahkan satu buah data tambahan ke dalam tabel mahasiswa_phphosting.

Proses pertama: prepared

Untuk menginput data ke dalam tabel mahasiswa_phphosting, kita akan menggunakan query INSERT…VALUES. Berikut adalah fungsi mysqli_prepare() untuk proses penambahan data:

<?php
// buat koneksi dengan MySQL, gunakan database: universitas
$link = mysqli_connect('localhost', 'root', '', 'universitas');
 
// buat prepared statements
$stmt = mysqli_prepare($link, "INSERT INTO mahasiswa_phphosting
VALUES (?, ?, ?, ?, ?)");
?>

Perhatikan cara penulisan query INSERT di atas. Karena fungsi prepared statements yang memisahkan query dengan data, maka di kolom VALUES, kita tidak langsung menuliskan data yang akan ditambahkan, tetapi menggunakan tanda (?) sebanyak lima kali untuk penanda data yang akan diinput. Kelima data ini selanjutnya akan ditambahkan pada saat proses bind.

Proses kedua: bind

Proses pengiriman data (bind) dilakukan dengan fungsi mysqli_stmt_bind_param(). Karena query INSERT kita membutuhkan lima variabel, maka fungsi mysqli_stmt_bind_param() juga harus menyertakan kelima variabel ini (untuk mengganti karakter (?, ?, ?, ?, ?)).

Sebelumnya, kita harus menuliskan masing-masing isian ke dalam variabel terpisah, lalu diinput ke dalam fungsi mysqli_stmt_bind_param(). Berikut adalah contoh kode program di mana kami akan men-bind data ke dalam prepared statement:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
// hubungkan "data" dengan prepared statements
mysqli_stmt_bind_param($stmt, "ssisd",
$nim_mhs, $nama_mhs, $umur_mhs , $tempat_lahir_mhs, $ipk_mhs);
 
// siapkan "data" query
$nim_mhs="089023020";
$nama_mhs="Naira Alika";
$umur_mhs=20;
$tempat_lahir_mhs="Padang";
$ipk_mhs=3.9;
?>

Dalam contoh di atas, fungsi mysqli_stmt_bind_param() memiliki tujuh argumen. Argumen pertama adalah variabel $stmt hasil fungsi mysqli_prepare(), argumen kedua adalah string yang menunjukkan lima tipe data. Argumen ketiga sampai ketujuh adalah variabel yang akan berisi data yang ingin diinput.

Untuk argumen kedua kami menulis “ssisd”, yang merupakan singkatan dari “string string string integer string decimal”. String ini akan berpasangan dengan variabel inputan ketiga sampai ketujuh:

  • $nim_mhs = “089023020” (string).
  • $nama_mhs = “Naira Alika” (string).
  • $umur_mhs = 20 (integer).
  • $tempat_lahir_mhs = Padang (string).
  • $ipk_mhs = 3.9 (decimal / float).

Setelah penulisan fungsi mysqli_stmt_bind_param(), kami membuat data sample mahasiswa dengan nama “Naira Alika”. Perhatikan bahwa isi data ini diinput ke dalam variabel yang sama dengan yang digunakan pada fungsi mysqli_stmt_bind_param() untuk argumen ketiga sampai ketujuh. Data-data inilah yang nantinya di-bind dengan query asal, sehingga query kita akan menjadi:

1
2
INSERT INTO mahasiswa_phphosting VALUES
("089023020", "Naira Alika", 20, "Padang", 3.9)

Proses ketiga: execute

Setelah query dan data selesai diinput, kita tinggal menjalankan query dengan fungsi mysqli_stmt_execute():

1
2
3
4
<?php
// jalankan query: execute
mysqli_stmt_execute($stmt);
?>

Memeriksa Hasil Query

Untuk memeriksa apakah hasil query INSERT yang dijalankan berhasil atau tidak, bisa dilakukan dengan memeriksa variabel $stmt dan fungsi mysqli_stmt_affected_rows(), seperti contoh berikut:

1
2
3
4
5
6
7
8
9
<?php
// cek hasil query
if (!$stmt) {
   die('Query Error : '.mysqli_errno($link).' - '.mysqli_error($link));
}
else {
   echo "Penambahan ".mysqli_stmt_affected_rows($stmt)." data berhasil<br />";
}
?>

Kondisi if (!$stmt) akan menjadi TRUE ketika query gagal, sehingga fungsi die() akan menghentikan proses dan menampilkan error yang terjadi. Tetapi jika query sukses, bagian else yang akan dijalankan. Karena pada contoh kali ini kami hanya menambahkan satu buah data, maka hasilnya adalah: satu.

Menginput Data dengan Mysqli Prepared Statements (Object Style)

Pada pembahasan di atas, kami menggunakan procedural style mysqli. Kali ini kami akan memodifikasi kode programnya menggunakan object style mysqli:

<?php
// buat koneksi dengan MySQL, gunakan database: universitas
$mysqli = new mysqli("localhost", "root", "","universitas");
// cek koneksi
if ($mysqli->connect_errno) {
die('Koneksi gagal: ' .$mysqli->connect_errno.
' - '.$mysqli->connect_error);
}
// buat prepared statements
$stmt = $mysqli->prepare("INSERT INTO mahasiswa_phphosting
VALUES (?, ?, ?, ?, ?)");
 
// hubungkan "data" dengan prepared statements
$stmt->bind_param("ssisd",
$nim_mhs, $nama_mhs, $umur_mhs , $tempat_lahir_mhs, $ipk_mhs);
// siapkan "data" query
$nim_mhs="089023020";
$nama_mhs="Naira Alika";
$umur_mhs=20;
$tempat_lahir_mhs="Padang";
$ipk_mhs=3.9;
// jalankan query
$stmt->execute();
// cek query
if (!$stmt) {
   die('Query Error : '.$mysqli->errno.
   ' - '.$mysqli->error);
}
else {
   echo "Penambahan ".$stmt->affected_rows. " data berhasil<br />";
}
// jalankan query untuk memeriksa hasil inputan
$result = $mysqli->query("SELECT * FROM mahasiswa_phphosting");
// tampilkan query
while ($row= $result->fetch_row()) {
   echo "$row[0] $row[1] $row[2] $row[3] $row[4]";
   echo "<br />";
}
// tutup statements
$stmt->close();
// tutup koneksi
$mysqli->close();
?>

Demikianlah pembahasan singkat mengenai cara menginput data dengan mysqli prepared statements. Semoga bermanfaat.

You may also like...