Tutorial PHP MySQL Part 18: Cara Menginput Data dengan mysqli Prepared Statements

Posted on

Kalau pada panduan PHP MySQL sebelumnya kita membahas mengenai cara menampilkan data dengan mysqli prepared statements, pada panduan kali ini kita akan mempelajari cara menginput data menggunakan mysqli prepared statements.


Cara Menginput Data dengan mysqli Prepared Statements

Perbedaan antara cara menginput data dan menampilkan data menggunakan prepared statements terletak di cara penanganan query. Apabila pada menampilkan data kita menggunakan petunjuk SELECT, karenanya bagi menginput data kita menggunakan query INSERT.

Fitur keamanan yang diberikan oleh prepared statements membuatnya cocok digunakan bagi petunjuk yang akan  mengubah isi tabel seperti petunjuk INSERT atau UPDATE. Selain itu, pemakaian prepared statement bagi proses input data yang berulang pun akan mempercepat proses eksekusi.

Pada contoh kasus kita kali ini, saya akan menambahkan 1 buah data tambahan kedalam tabel mahasiswa_ilkom. Saya pun tak akan membahas secara mendalam fungsi-fungsi prepared statement yang digunakan, karena kita telah membahasnya di panduan sebelumnya.

Proses pertama-tama: prepared

Bagi menginput data kedalam tabel mahasiswa_ilkom, kita akan menggunakan query INSERT…VALUES (Kalau sahabat ingin mempelajari cara-cara menginput data kedalam MySQL, silahkan kunjungi tutorial MySQL: Cara menambahkan data kedalam tabel).

Berikut ialah manfaat mysqli_prepare() bagi proses penambahan data:

Perhatikan cara penulisan query INSERT diatas. Karena manfaat prepared statements yang memisahkan query dengan data, karenanya di kolom VALUES, kita tak seketika menuliskan data yang akan ditambahkan, tetapi menggunakan tanda “?” sebanyak 5 kali bagi penanda data yang akan diinput. Kelima data ini berikutnya akan ditambahkan di ketika proses bind.

Proses kedua: bind

Proses pengiriman data (bind) dilakukan dengan manfaat mysqli_stmt_bind_param(). Karena query INSERT kita membutuhkan 5 variabel, karenanya manfaat mysqli_stmt_bind_param() pun mesti menyertakan kelima variabel ini (bagi mengganti karakter (?, ?, ?, ?, ?)).

Sebelumnya, kita mesti menuliskan masing-masing isian ke pada variabel terpisah, lalu kemudian baru diinput kedalam manfaat mysqli_stmt_bind_param(). Berikut ialah contoh kode program dimana saya akan men-bind data ke pada prepared statement:

Pada contoh diatas, manfaat mysqli_stmt_bind_param() mempunyai 7 argumen. Argumen pertama-tama ialah variabel $stmt hasil manfaat mysqli_prepare(), argumen kedua ialah string yang menunjukkan 5 tipe data. Argumen ke-3 hingga ke-7 ialah variabel yang akan berisi data yang ingin diinput.

Bagi argumen kedua saya menulis “ssisd”, yang adalah singkatan dari “string string string integer string decimal”. String ini akan berpasangan dengan variabel inputan ke-3 hingga ke-7:

  • $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 manfaat mysqli_stmt_bind_param(), saya kemudian merancang data contoh mahasiswa dengan nama “Naira Alika”. Perhatikan bahwa isi data ini diinput ke pada variabel yang sama dengan yang digunakan di manfaat mysqli_stmt_bind_param() bagi argumen ke-3 s/d ke-7.

Data-data inilah yang nantinya di-bind dengan query asal, sehingga query kita akan menjadi:

Proses ketiga: execute

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

Memeriksa Hasil Query

Bagi memeriksa apakah hasil query INSERT yang dijalankan berhasil atau tak, dapat dilakukan dengan memeriksa variabel $stmt dan manfaat mysqli_stmt_affected_rows(), seperti contoh berikut:

Kondisi if (!$stmt) akan menjadi TRUE ketika query gagal, sehingga manfaat die() akan menghentikan proses dan menampilkan error yang terjadi. Tetapi jikalau query sukses, bagian else yang akan dijalankan.

Kegunaan mysqli_stmt_affected_rows() mirip dengan manfaat mysql_ affected_rows() yang pernah kita bahas, dan akan menampilkan berapa jumlah baris yang diupdate. Karena di contoh kali ini kita hanya menambahkan 1 buah data, karenanya hasilnya ialah: 1.

Agar lebih yakin, saya kemudian akan menampilkan seluruh tabel mahasiswa_ilkom dengan kode berikut:

Kode diatas telah sering kita gunakan, sehingga saya tak akan membahasnya lagi.

Terakhir ialah manfaat opsional bagi memutus koneksi dengan MySQL Server:

Dengan menggabungkan seluruh pembahasan kita diatas, berikut ialah contoh kode program PHP komplit mengenai cara menginput data MySQL menggunakan mysqli prepared statem
ent
:

Apabila dijalankan, karenanya hasil yang didapat ialah selaku berikut:

Dapat terlihat bahwa data mahasiswa baru: “Naira Alika” telah masuk kedalam tabel mahasiswa_ilkom.


Cara Menginput Multiple Data dengan mysqli Prepared Statements

Masih berkaitan dengan pembahasan kita, saya akan memodifikasi sedikit kode program bagi menampilkan cara menginput banyak data (multiple data) menggunakan mysqli prepared statement:

Kode diatas sedikit panjang, tetapi jikalau sahabat telah memahami konsep prepared statement, fungsi-fungsi yang terdapat dapat dimengerti dengan gampang.

Perhatikan bahwa ketika kita menginput banyak data, kita tak perlu lagi mengirimkan query ke MySQL Server, tetapi lumayan dengan mengubah variabel data dan menjalankan manfaat mysqli_stmt_execute(). Bagi situasi inilah prepared statement menjadi lebih efisien dari di metoda mysqli ‘lazimnya’.

Kalau sahabat menjalankan kode program diatas, berikut ialah hasil yang didapat:


Cara Menginput Data dengan mysqli Prepared Statements (object style)

Pada pembahasan diatas, saya menggunakan procedural style mysqli, kali ini kita akan melihat modifikasi kode programnya jikalau menggunakan object style mysqli:


Pada panduan belajar PHP MySQL kali ini kita telah mempelajari cara menggunakan mysqli prepared statement bagi menginput data kedalam database. Panduan kali ini menutup sesi pembahasan mengenai mysqli. Pada panduan berikutnya kita akan berkenalan dengan extension ketiga PHP-MySQL, yakni PDO: PHP Data Object.


Sumber https://www.duniailkom.com/