17
PHP: Akses Basis Data Agi Putra Kharisma, S.T., M.T.

PHP: Akses Basis Data - agipk.lecture.ub.ac.idagipk.lecture.ub.ac.id/files/2014/02/PW-20132014-08-AksesBasisData.pdf · •mysqli (prosedural & OOP) •PDO (OOP) ... MySQL Dengan

  • Upload
    ngoliem

  • View
    243

  • Download
    0

Embed Size (px)

Citation preview

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. 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'

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_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