php mysql

Php Mysql – cara tepat membuat koneksi PHP 7 dengan database MySQL

Dalam rangka pembuatan aplikasi web yang dinamis berbasis PHP, salah satu komponen yang dibutuhkan adalah database. Dan sistem database yang sering digunakan adalah MySQL/MariaDB.

Manfaat utama penggunaan database adalah kita dapat secara dinamis mengolah dan menampilkan data tanpa harus mengutak-atik kode PHP.

Interaksi PHP Mysql

MySql berkomunikasi dengan PHP menggunakan ekstensi bernama php_mysql atau php_mysqli. Dewasa ini ekstensi yang lebih sering digunakan adalah php_mysqli karena keterbatasan-keterbatasan yang dimiliki oleh ekstensi php_mysql.

Membuat koneksi PHP dengan MySQL

Contoh penggunaan koneksi standar adalah sebagai berikut:

$koneksi = mysqli_connect(host, user, password, database, port, socket);

Variabel $koneksi di atas terdiri dari beberapa parameter yang mesti dilewatkan di dalamnya.

  • host : berisi informasi tentang host database. Secara default host yang digunakan adalah localhost. Dapat pula menggunakan alamat ip dari lokasi database ( localhost = 127.0.0.1 )
  • user : nama user mysql.
  • password : password mysql
  • database: nama database yang hendak dihubungkan atau digunakan
  • port : port yang digunakan untuk membentuk koneksi. Secara default port yang digunakan biasanya 3306.
  • socket: socket yang digunakan.

Pada kebanyakan kasus penggunaan PHP Mysql, tidak semua parameter wajib kita masukkan dalam membuat koneksi. Koneksi dapat dibuat dengan lebih ramping seperti berikut ini:

$koneksi = mysqli_connect("localhost", "namauser", "password", "nama_database");

Ketika koneksi berhasil dilakukan, variabel $koneksi akan berisi dengan apa yang disebut connection handle. Kita harus menggunakannya untuk mereferensikan sesi sambungan di beberapa fungsi php_mysqli pustaka lainnya.

Untuk mengganti database kita dapat menggunakan perintah:

mysqli_select_db($koneksi, "database");

Memutuskan koneksi

Ketika kita membuat koneksi ke server MySQL, koneksi akan tetap terbuka dan berjalan selama durasi program tersebut. Ketika server PHP mencapai akhir kode PHP untuk halaman web bersangkutan, secara otomatis program akan menutup koneksi.

Server MySQL memiliki sejumlah koneksi klien terbatas yang didukungnya (didefinisikan oleh file konfigurasi MySQL). Jika kita mengkodekan dalam lingkungan volume tinggi yang memiliki banyak pengguna yang mengakses aplikasi web pada saat yang sama, mungkin penting bahwa aplikasi tersebut menutup koneksi server MySQL sesegera mungkin.

Jika kita bekerja di jenis lingkungan tersebut, kita dapat menutup koneksi server MySQL secara manual segera setelah selesai menggunakannya untuk membantu membebaskan lebih banyak koneksi sesegera mungkin. Kita dapat melakukannya dengan menggunakan fungsi mysqli_close(). Cukup tentukan handle koneksi sebagai parameter tunggal:

mysqli_close($con);

Membuat query database

Setelah membuat koneksi ke server MySQL, kita dapat mulai mengirimkan pernyataan SQL. Kita dapat mengirimkan semua jenis pernyataan, seolah-olah kita bekerja dari antarmuka baris perintah MySQL.
Fungsi prosedural yang kita gunakan untuk mengirimkan kueri ke server MySQL adalah fungsi mysqli_query(). Berikut formatnya:

$dbresult = mysqli_query(handle, query);

Parameter handle adalah pengatur koneksi yang dibuat saat kita terhubung ke server MySQL. Parameter kueri adalah pernyataan teks SQL. Kecuali kita mengirimkan pernyataan SQL yang sangat singkat, telah menjadi praktik umum untuk menyimpan pernyataan SQL dalam variabel agar tidak membuat pernyataan mysqli_query() terlalu rumit:

$query = "SELECT * FROM siswa";
$dbresult = mysqli_query($koneksi, $query);

Mengambil data

Jika kita mengirimkan pernyataan SQL yang akan mengambil data (seperti pernyataan SELECT), handle rangkaian hasil yang dikembalikan akan menunjuk ke data. Kita kemudian dapat mengambil data menggunakan fungsi pustaka mysqli lainnya.

Sebenarnya ada beberapa cara php mysql berbeda untuk mengambil data itu menggunakan fungsi atau metode yang berbeda.

FungsiMetodeDeskripsi
mysqli_fetch_allfetch_all()Mengambil semua data ke dalam bentuk array
mysqli_fetch_arrayfetch_array()Mengambil record data tertentu ke dalam bentuk array
mysqli_fetch_assocfetch_assoc()Mengambil record data saat ini dalam hasil yang ditetapkan sebagai array asosiatif
mysqli_fetch_field_direct()fetch_field_direct()Mengambil metadata untuk bidang tertentu ke dalam bentuk himpunan data
mysqli_fetch_field()fetch_field()Mengambil metadata untuk satu bidang dalam himpunan data
mysqli_fetch_fields()fetch_fields()Mengembalikan metadata untuk semua bidang dalam kumpulan hasil sebagai array
mysqli_fetch_object()fetch_object()Mengambil rekaman data saat ini dari hasil yang ditetapkan sebagai objek
mysqli_fetch_row()fetch_row()Mengambil rekaman data saat ini dari hasil yang ditetapkan sebagai array numerik
mysqli_field_seek()field_seek()Mengatur penunjuk kumpulan hasil ke bidang tertentu dalam rekaman data saat ini
mysqli_free()free()Melepaskan memori yang terkait dengan pengatur kumpulan hasil
Tabel 1: Fungsi dan Metode mysqli select

Pernyataan fetch php mysql memungkinkan kita untuk menelusuri melalui hasil yang menetapkan satu record data pada satu waktu. Setiap kali kita memanggil pernyataan fetch, ia mengembalikan data dari record data saat ini dalam kumpulan hasil; lalu pointer memindahkan penunjuk ke record data berikutnya dalam hasil yang ditetapkan untuk panggilan berikutnya.

Ketika mencapai akhir data record hasil, data mengembalikan nilai NULL, membuatnya ideal untuk menggunakan pernyataan pengambilan dalam beberapa loop while(). Contoh:

$query = "SELECT * FROM siswa";
$hasil = mysqli_query($koneksi, $query);
while($row = mysqli_fetch_assoc($hasil)) {
   echo "<p>Nama : $row['nama']<br>\n";
   echo "Kelas: $row['kelas']<br>\n";
   echo "Alamat: $row['alamat']<br>\n";
   echo "Nilai: $row['nilai']</p>\n;
}
php mysql
Photo by Caspar Camille Rubin on Unsplash

Baca juga: https://framelian.com/cara-membuat-database-menggunakan-mysql/

Menambah data / insert data

Operasi insert menggunakan variabel yang dikirim dari form HTML bisa menggunakan cara seperti berikut ini:

$id = $_POST['id'];
$nama = $_POST['nama'];
$kelas = $_POST['kelas'];
$alamat = $_POST['alamat'];
$nilai = $_POST['nilai'];
$query = "INSERT INTO siswa VALUES ($id, '$nama', '$kelas',
'$alamat','$nilai')";
$dbresult = $db->query($query);

Metode ini berfungsi, tetapi ini adalah cara tersebut berbahaya untuk memasukkan data ke dalam database. Oleh karena itu cara ini tidak dianjurkan dalam operasi php mysql.

Tidak ada jaminan bahwa orang yang menggunakan formulir HTML akan memasukkan data yang benar ke semua bidang data (baik secara tidak sengaja atau sengaja). Juga tidak ada jaminan data yang dikirimkan dalam formulir tidak akan berisi karakter berbahaya yang dimaksudkan untuk menyebabkan masalah dengan database.

Cara pengiriman data yang lebih aman dalam operasi INSERT adalah dengan menggunakan pernyataan prepare, yang menentukan template queri yang ingin kita jalankan di server MySQL, lalu mengirim data terpisah dari template.

Server MySQL menyimpan pernyataan prepare, lalu mencocokkan data yang dikirimkan terhadap template. Ini membantu memfilter data berbahaya. Plus, ini dapat membantu mempercepat mengeksekusi beberapa pernyataan INSERT di server.

Kita hanya mengirimkan satu pernyataan template. Kemudian kita dapat menerapkan beberapa pernyataan data terhadap template yang sama.
Dengan pernyataan yang disiapkan, kita membuat string kueri seperti biasa, tetapi alih-alih menyertakan nilai data, kita menggunakan tanda tanya sebagai tempat penampung untuk setiap nilai, seperti ini:

// $query = "INSERT INTO siswa VALUES ($id, '$nama', '$kelas', '$alamat','$nilai')";
$query = "INSERT INTO siswa VALUES (?, ?, ?, ?, ?)";

Kemudian kita menggunakan pernyataan prepare untuk mengirimkan query tersebut :

$constmt = mysqli_prepare($con, $query);

Leave a Reply