Mari kita bahas tentang cara membuat koneksi dengan Database MySQL menggunakan PHP. Dalam dunia pengembangan website, sudah menjadi hal yang umum untuk menggunakan MySQL sebagai salah satu database management system (DBMS) pilihan. MySQL sendiri diklaim sebagai DBMS open source dengan performa yang sangat cepat dan handal. Oleh karena itu, banyak pengembang website yang memilih MySQL untuk menyimpan data pada website-nya.
Cara Membuat Koneksi
Pertama-tama kita perlu melakukan koneksi terlebih dahulu. Kita bisa menggunakan fungsi mysqli_connect()
untuk melakukan koneksi ke MySQL. Berikut adalah contoh kode:
<?php
$servername = "localhost";
$username = "username_db";
$password = "password_db";
$dbname = "nama_db";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn)
die("Connection failed: " . mysqli_connect_error());
echo "Connected successfully";
?>
Pada contoh kode di atas, kita menggunakan variabel $servername
, $username
, $password
, dan $dbname
untuk menyimpan informasi yang diperlukan untuk melakukan koneksi. Disarankan untuk menyimpan informasi ini dalam satu file yang berbeda dan di-include
ke dalam file koneksi.
Selanjutnya, kita menggunakan fungsi mysqli_connect()
untuk membuat koneksi. Fungsi ini menerima 4 parameter, yaitu $servername
, $username
, $password
, dan $dbname
. Jika koneksi berhasil dibuat, kita akan menampilkan pesan “Connected successfully”.
Cara Mengambil Data dari Database
Setelah koneksi berhasil dibuat, selanjutnya kita bisa melakukan operasi pada database, seperti mengambil data. Kita bisa menggunakan fungsi mysqli_query()
untuk menjalankan query SQL pada MySQL. Berikut adalah contoh kode:
<?php
$sql = "SELECT * FROM table_name";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0)
// output data of each row
while($row = mysqli_fetch_assoc($result))
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
else
echo "0 results";
mysqli_close($conn);
?>
Pada contoh kode di atas, kita mengambil data dari tabel table_name
. Kita menggunakan fungsi mysqli_query()
untuk menjalankan query SQL SELECT * FROM table_name
. Hasil query akan disimpan dalam variabel $result
.
Selanjutnya, kita menggunakan fungsi mysqli_num_rows()
untuk memeriksa apakah query menghasilkan baris data atau tidak. Jika hasil query lebih dari 0, kita akan menampilkan data menggunakan looping while
dan fungsi mysqli_fetch_assoc()
. Jika tidak ada data yang ditemukan, kita akan menampilkan pesan “0 results”.
Cara Menyimpan Data ke Database
Selain mengambil data, kita juga bisa menyimpan data ke MySQL. Kita bisa menggunakan fungsi mysqli_query()
untuk menjalankan query SQL INSERT
. Berikut adalah contoh kode:
<?php
$sql = "INSERT INTO table_name (column1, column2, column3) VALUES ('value1', 'value2', 'value3')";
if (mysqli_query($conn, $sql))
echo "New record created successfully";
else
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
mysqli_close($conn);
?>
Pada contoh kode di atas, kita menggunakan fungsi mysqli_query()
untuk menjalankan query INSERT INTO table_name (column1, column2, column3) VALUES ('value1', 'value2', 'value3')
. Jika query berhasil dijalankan, kita akan menampilkan pesan “New record created successfully”. Jika terjadi error, kita akan menampilkan pesan error dan pesan error yang dihasilkan oleh MySQL menggunakan fungsi mysqli_error()
.
Cara Mengubah Data di Database
Selain menyimpan data baru, kita juga bisa mengubah data yang sudah ada di MySQL. Kita bisa menggunakan fungsi mysqli_query()
untuk menjalankan query SQL UPDATE
. Berikut adalah contoh kode:
<?php
$sql = "UPDATE table_name SET column1='new_value1', column2='new_value2' WHERE id=1";
if (mysqli_query($conn, $sql))
echo "Record updated successfully";
else
echo "Error updating record: " . mysqli_error($conn);
mysqli_close($conn);
?>
Pada contoh kode di atas, kita menggunakan fungsi mysqli_query()
untuk menjalankan query UPDATE table_name SET column1='new_value1', column2='new_value2' WHERE id=1
. Jika query berhasil dijalankan, kita akan menampilkan pesan “Record updated successfully”. Jika terjadi error, kita akan menampilkan pesan error dan pesan error yang dihasilkan oleh MySQL menggunakan fungsi mysqli_error()
.
Cara Menghapus Data di Database
Terakhir, kita juga bisa menghapus data yang sudah ada di MySQL. Kita bisa menggunakan fungsi mysqli_query()
untuk menjalankan query SQL DELETE
. Berikut adalah contoh kode:
<?php
$sql = "DELETE FROM table_name WHERE id=1";
if (mysqli_query($conn, $sql))
echo "Record deleted successfully";
else
echo "Error deleting record: " . mysqli_error($conn);
mysqli_close($conn);
?>
Pada contoh kode di atas, kita menggunakan fungsi mysqli_query()
untuk menjalankan query DELETE FROM table_name WHERE id=1
. Jika query berhasil dijalankan, kita akan menampilkan pesan “Record deleted successfully”. Jika terjadi error, kita akan menampilkan pesan error dan pesan error yang dihasilkan oleh MySQL menggunakan fungsi mysqli_error()
.
Penggunaan Pagination pada PHP
Salah satu tugas yang mungkin diberikan pada pengembang website adalah menampilkan data dari database dalam beberapa halaman. Hal ini sering disebut dengan pagination. Pagination sangat berguna ketika kita memiliki banyak data yang harus ditampilkan, agar pengguna tidak perlu melakukan scroll terlalu jauh pada halaman website.
Untuk membuat pagination pada PHP, kita perlu melakukan beberapa tahap. Berikut adalah contoh kode untuk membuat pagination pada PHP:
<?php
$per_page = 10;
$page = isset($_GET['page']) ? $_GET['page'] : 1;
$sql = "SELECT * FROM table_name";
$result = mysqli_query($conn, $sql);
$total_results = mysqli_num_rows($result);
$total_pages = ceil($total_results / $per_page);
$offset = ($page - 1) * $per_page;
$sql = "SELECT * FROM table_name LIMIT $offset, $per_page";
$result = mysqli_query($conn, $sql);
while($row = mysqli_fetch_assoc($result))
echo $row['column1'] . '<br>';
for ($i=1; $i<=$total_pages; $i++)
echo '<a href="?page=' . $i . '">' . $i . '</a> ';
mysqli_close($conn);
?>
Pada contoh kode di atas, kita menggunakan variabel $per_page
untuk menyimpan jumlah data yang akan ditampilkan pada satu halaman. Selanjutnya, kita menggunakan variabel $page
untuk menyimpan nomor halaman yang sedang aktif. Jika $page
tidak diberikan pada URL, kita mengeset nilai $page
menjadi 1.
Selanjutnya, kita menggunakan query SQL SELECT * FROM table_name
untuk mengambil seluruh data pada tabel. Hasil query akan dihitung jumlahnya menggunakan fungsi mysqli_num_rows()
, kemudian digunakan untuk menghitung jumlah halaman yang dibutuhkan dengan rumus $total_pages = ceil($total_results / $per_page)
. Ceil digunakan untuk membulatkan hasil pembagian menjadi bilangan bulat yang lebih tinggi, sehingga jumlah halaman yang dibutuhkan tidak kurang dari jumlah data yang ingin ditampilkan diper halaman.
Selanjutnya, kita menghitung nilai $offset
yang akan digunakan untuk menentukan awal dan akhir data yang akan ditampilkan pada halaman tersebut. Setelah itu, kita menggunakan query SELECT * FROM table_name LIMIT $offset, $per_page
untuk mengambil data yang sesuai. Data tersebut kemudian ditampilkan menggunakan looping while
.
Terakhir, kita menggunakan looping for
untuk menampilkan link pagination. Looping ini akan berjalan sebanyak $total_pages
kali, dan pada setiap iterasi akan menampilkan link ke halaman yang sesuai dengan nomor halaman tersebut.
Membuat Relasi Antar Tabel di MySQL dan phpMyAdmin
Relasi antar tabel dalam MySQL dan phpMyAdmin dapat dibuat dengan menggunakan foreign key. Foreign key menghubungkan dua tabel dengan kolom yang sama, sehingga data yang berkaitan dapat diambil dengan mudah. Berikut ini adalah contoh cara membuat relasi antar tabel di MySQL dan phpMyAdmin.
Cara pertama
Cara pertama adalah dengan membuat relasi antara dua tabel pada saat pembuatan tabel tersebut. Berikut adalah contoh kode SQL:
CREATE TABLE orders (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
customer_id INT(6) UNSIGNED,
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (customer_id) REFERENCES customers(id)
);
CREATE TABLE customers (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(50),
phone VARCHAR(15)
);
Pada contoh kode di atas, kita membuat tabel orders
dan customers
. Kolom customer_id
pada tabel orders
dihubungkan dengan kolom id
pada tabel customers
. Dengan begitu, kita bisa mengambil data pelanggan pada tabel customers
untuk menampilkan detail pada tabel orders
.
Cara kedua
Cara kedua adalah dengan membuat relasi antar tabel pada tabel yang sudah ada. Berikut adalah contoh kode SQL:
CREATE TABLE orders (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
customer_id INT(6) UNSIGNED,
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE customers (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(50),
phone VARCHAR(15)
);
ALTER TABLE orders
ADD FOREIGN KEY (customer_id)
REFERENCES customers(id);
Pada contoh kode di atas, kita membuat tabel orders
dan customers
seperti contoh sebelumnya. Namun, hubungan antar kedua tabel dibuat pada tabel orders
dengan menggunakan perintah ALTER TABLE
dan fungsi ADD FOREIGN KEY
.
Cara Export Laporan/Data dari Database MySQL ke dalam Format Excel (.xlsx)
Selain menampilkan data pada halaman website, ada kalanya kita juga perlu menyimpan data ke dalam file Excel untuk keperluan laporan atau pengolahan data lainnya. Kita bisa menggunakan library PHPOffice/PHPExcel untuk membuat file Excel dari data pada MySQL. Berikut adalah contoh kode untuk membuat file Excel dari data pada MySQL:
<?php
require_once 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
// Create new Spreadsheet object
$spreadsheet = new Spreadsheet();
// Set active sheet
$spreadsheet->setActiveSheetIndex(0);
// Set header
$spreadsheet->getActiveSheet()
->setCellValue('A1', 'ID')
->setCellValue('B1', 'Name')
->setCellValue('C1', 'Email');
// Get data from database
$sql = "SELECT * FROM table_name";
$result = mysqli_query($conn, $sql);
$rowCount = 2;
// Loop through data and insert to spreadsheet
while ($row = mysqli_fetch_assoc($result))
$spreadsheet->getActiveSheet()
->setCellValue('A' . $rowCount, $row['id'])
->setCellValue('B' . $rowCount, $row['name'])
->setCellValue('C' . $rowCount, $row['email']);
$rowCount++;
// Set style
$spreadsheet->getActiveSheet()
->getStyle('A1:C1')
->getFont()
->setBold(true);
// Set file name and format
$filename = 'data.xlsx';
// Create writer object
$writer = new Xlsx($spreadsheet);
// Export to excel file
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit;
?>
Pada contoh kode di atas, kita menggunakan library PHPOffice/PHPExcel untuk membuat file Excel. Library ini bisa di-install menggunakan composer
dengan menjalankan perintah composer require phpoffice/phpspreadsheet
pada terminal.
Selanjutnya, kita membuat objek Spreadsheet
baru dan mengeset sheet yang sedang aktif menggunakan fungsi setActiveSheetIndex()
. Selanjutnya, kita membuat header pada file Excel menggunakan fungsi setCellValue()
.
Selanjutnya, kita mengambil data dari MySQL dan memasukkannya ke dalam file Excel menggunakan looping while
. Setelah itu, kita mengatur style pada header menggunakan fungsi setStyle()
.
Terakhir, kita membuat file Excel dan meng-export file tersebut menggunakan HTTP response headers.
FAQ
1. Apa itu MySQL?
MySQL adalah salah satu database management system (DBMS) open source yang paling populer dan digunakan oleh banyak pengembang web. MySQL dikembangkan oleh Oracle Corporation