PHP: Akses Basis Data

advertisement
PHP: Akses Basis Data
Agi Putra Kharisma, S.T., M.T.
Metode Koneksi/Akses Basis Data
MySQL dengan PHP
• mysql (prosedural)
• mysqli (prosedural & OOP)
• PDO (OOP)
PDO vs MySQLi
Proses Umum Pembacaan Basis Data
MySQL Dengan PHP
1.
2.
3.
4.
5.
Buat koneksi ke MySQL
Buat query
Eksekusi query
Ambil hasil query
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'
DANGER...!!!
SQL
Injection
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_M
ySQL_Developers
• http://code.tutsplus.com/tutorials/why-youshould-be-using-phps-pdo-for-databaseaccess--net-12059
Next
• Model-View-Controller (MVC)
Bahan bacaan:
Membangun Framework Sederhana
http://bertzzie.com/knowledge/frameworkphp/index.html
Download