Upload
ngoliem
View
243
Download
0
Embed Size (px)
Citation preview
Metode Koneksi/Akses Basis Data MySQL dengan PHP
• mysql (prosedural)
• mysqli (prosedural & OOP)
• PDO (OOP)
Proses Umum Pembacaan Basis Data MySQL Dengan PHP
1. Buat koneksi ke MySQL
2. Buat query
3. Eksekusi query
4. Ambil hasil query
5. Ulangi proses 2 – 5 sampai semua data yang dibutuhkan terambil
6. Tutup koneksi ke MySQL
Contoh Skrip Koneksi ke MySQL
$db = new PDO( 'mysql:host=localhost;
dbname=testdb;
charset=utf8',
'username',
'password');
Mengambil Data Dari Tabel Basis Data
• fetch $stmt = $db->query('SELECT * FROM table');
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['field1'].' '.
$row['field2'];
//etc...
}
• fetchAll $stmt = $db->query('SELECT * FROM table');
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
//use $results
Mengetahui Jumlah Baris Yang Terpilih Oleh SELECT
$stmt = $db->query('SELECT * FROM table');
$row_count = $stmt->rowCount();
PERHATIAN: Kode di atas (rowCount()) hanya berlaku untuk driver
MySQL, tidak bisa digunakan untuk basis data dari vendor lain.
INSERT, UPDATE, DELETE
$affected_rows = $db->exec("UPDATE
table SET field='value'");
echo $affected_rows.' were affected'
Contoh SQL Injection
SELECT * WHERE user = 'admin' #' AND pass=''
DELETE FROM users WHERE user='terserah' OR 1=1 # AND
pass=''
*keterangan: tanda (#) pada SQL adalah komentar, sehingga kode di sebelah kanannya tidak akan dieksekusi
Prepared Statement
ANTI SQL-INJECTION!!!
$stmt = $db->prepare("SELECT * FROM table
WHERE id=:id AND name=:name");
$stmt->execute(array(':name' => $name, ':id'
=> $id));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
Contoh Prepared Statement Untuk INSERT
$stmt = $db->prepare("INSERT INTO
table(field1,field2,field3,field4,field5)
VALUES(:field1,:field2,:field3,:field4,:fiel
d5)");
$stmt->execute(array(':field1' => $field1,
':field2' => $field2, ':field3' => $field3,
':field4' => $field4, ':field5' =>
$field5));
$affected_rows = $stmt->rowCount();
Contoh Prepared Statement Untuk UPDATE
$stmt = $db->prepare("UPDATE table SET
name=:name WHERE id=:id");
$stmt->execute(array(':name' => $name,
':id' => $id);
$affected_rows = $stmt->rowCount();
Contoh Prepared Statement Untuk DELETE
$stmt = $db->prepare("DELETE FROM table
WHERE id=:id");
$stmt->execute(array(':id' => $id));
$affected_rows = $stmt->rowCount();
Latihan
Buat aplikasi “Buku Alamat” dengan ketentuan:
1. Data yang dimuat meliputi: Nama, Alamat, Nomor HP
2. Fitur yang tersedia meliputi: Tampilkan Buku Alamat, Tambah, Ubah, Hapus, Pencarian Berdasarkan Nama.
3. Gunakan implementasi dengan PHP berorientasi objek dan akses basis data menggunakan Prepared Statement PDO
Referensi
• http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers
• http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059
Next
• Model-View-Controller (MVC)
Bahan bacaan:
Membangun Framework Sederhana
http://bertzzie.com/knowledge/framework-php/index.html