Kode MK : Revisi Terakhir :
Sesi 13 - 14
Robby Cokro Buwono Badiyanto, S.Kom,. M.Kom
Akses data
AK2011T 2013
Tujuan
Tujuan Intruksional Intruksional
Memahami berbagai ekstensi akses
database
API PHP database MySQL API PHP database MySQL
Dengan PHP kita dapat terkoneksi dan memanipulasi database.
MySQL adalah salah satu Database
Management System yang dapat diakses oleh PHP.
MySQL adalah relational database dimana terdapat kolom dan baris record
3
API PHP database MySQL API PHP database MySQL
Untuk dapat mengakses MySQL dengan PHP kita menggunakan API (Application Programming Interface) yang
mendefinisikan kelas, metode, fungsi dan
variabel yang aplikasi dan diperlukan hanya
dengan memanggil untuk melaksanakan
tugas yang diinginkan.
API PHP database MySQL API PHP database MySQL
Terdapat tiga API yang dapat digunakan untuk menghubungkan dengan MySQL database server yaitu :
PHP's MySQL Extension (prosedural)
PHP's mysqli Extension (OOP)
PHP Data Objects (PDO) (OOP)
5
PHP's MySQL Extension PHP's MySQL Extension
Perintah yang digunakan diantaranya
mysql_connect - Buka koneksi ke Server MySQL
mysql_close - Tutup koneksi MySQL
mysql_errno - Mengembalikan nilai numerik dari pesan kesalahan dari operasi MySQL sebelumnya
mysql_error - Mengembalikan teks pesan kesalahan dari operasi MySQL sebelumnya
mysql_select_db - Pilih database MySQL
mysql_query - Kirim query MySQL
mysql_result - Dapatkan Data hasil
mysql_num_rows - Dapatkan jumlah baris dalam hasil
mysql_fetch_array - Ambil hasil baris sebagai array asosiatif, array numerik, atau keduanya
mysql_fetch_assoc - Ambil hasil baris sebagai array asosiatif
PHP's MySQL Extension PHP's MySQL Extension
<?php
$koneksi = mysql_connect('localhost', 'root', '');
if (!$koneksi) {
die('Tidak dapat konek: ' . mysql_error());
}
echo 'Koneksi berhasil';
$db = mysql_select_db('barang', $koneksi);
if (!$db) {
die ('Tidak menggunakan database barang : ' . mysql_error());
}
$result = mysql_query('SELECT * FROM barang');
if (!$result) {
die('Query tidak valid: ' . mysql_error());
}
echo "<table border='1'>" ; echo "<tr>" ;
echo "<td>Kode</td>" ;
7
PHP's MySQL Extension PHP's MySQL Extension
echo "<td>Nama Barang</td>" ; echo "<td>Harga</td>" ; echo "<td>Jumlah</td>" ; echo "<td>Satuan</td>" ; echo "</tr>" ;
while($rows = mysql_fetch_assoc($result)){
echo "<tr>" ;
echo "<td>".$rows["kode_barang"]."</td>" ; echo "<td>".$rows["nama_barang"]."</td>" ; echo "<td>".$rows["harga_barang"]."</td>" ; echo "<td>".$rows["jumlah_barang"]."</td>" ; echo "<td>".$rows["satuan"]."</td>" ; echo "</tr>" ;
}
echo "</table>" ;
echo "Jumlah Record ".mysql_num_rows($result) ; mysql_close($koneksi);
?>
PHP's mysqli Extension PHP's mysqli Extension
mysqli :: __ construct - Buka koneksi baru ke server MySQL
mysqli :: close - Menutup koneksi database dibuka sebelumnya mysqli :: comit - Komit transaksi saat
mysqli :: $connect_errno - Mengembalikan kode kesalahan dari panggilan koneksi sebelumnya
mysqli :: $connect_error - Mengembalikan deskripsi string kesalahan koneksi terakhir
mysqli :: $errno - Mengembalikan kode kesalahan untuk pemanggilan fungsi terbaru
mysqli :: $error - Mengembalikan deskripsi string dari kesalahan terakhir
mysqli :: query- Melakukan query pada database
mysqli :: rollback - Rolls back transaksi berjalan
mysqli :: select_db - Memilih database default untuk database queries
mysqli :: begin_transaction - Mulai transaksi
mysqli :: query - Melakukan query pada database
mysqli_result :: fetch_array - Ambil hasil baris sebagai asosiatif, array numerik, atau keduanya
mysqli_result :: fetch_assoc - Ambil hasil baris sebagai array asosiatif
mysqli_result :: $NUM_ROWS - Mendapatkan jumlah baris dalam hasil
9
PHP's mysqli Extension PHP's mysqli Extension
<?php
$mysqli = new mysqli('localhost', 'root', '', 'barang');
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}
echo 'Success... ' . $mysqli->host_info . "\n";
$query = "SELECT * FROM barang" ;
if ($result = $mysqli->query($query)) { echo "<table border='1'>" ; echo "<tr>" ; echo "<td>Kode</td>" ; echo "<td>Nama Barang</td>" ; echo "<td>Harga</td>" ; echo "<td>Jumlah</td>" ; echo "<td>Satuan</td>" ;
PHP's mysqli Extension PHP's mysqli Extension
echo "</tr>" ;
while ($rows = $result->fetch_assoc()) { echo "<tr>" ;
echo "<td>".$rows["kode_barang"]."</td>" ; echo "<td>".$rows["nama_barang"]."</td>" ; echo "<td>".$rows["harga_barang"]."</td>" ; echo "<td>".$rows["jumlah_barang"]."</td>" ; echo "<td>".$rows["satuan"]."</td>" ; echo "</tr>" ;
}
echo "</table>" ; $result->free();
}
$mysqli->close();
?>
11
Apa
Apa PDO PDO??
PDO adalah singkatan dari PHP Data Objects.
PDO adalah cara ramping yang konsisten untuk mengakses database.
pengembang dapat menulis kode portabel jauh lebih mudah
PDO bukan lapisan abstraksi seperti PearDB
Lapisan akses data yang menggunakan API (Application Programming Interface /
Antarmuka Pemrograman Aplikasi) terpadu.
Koneksi ke MySQL Koneksi ke MySQL
$db = new PDO( 'mysql:host=localhost;
dbname=testdb;
charset=utf8', 'username', 'password');
13
Membaca Data Membaca Data
Method fetch() contoh :
$stmt = $db->query('SELECT * FROM table');
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['field1'].' '.
$row['field2']; //etc...
}
Baca Data Baca Data
Method fetchAll()
$stmt = $db->query('SELECT * FROM table');
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($results as $hasil) {
//echo $hasil[0];
}
15
Membaca Data Membaca Data
Method rowCount()
contoh:
$stmt = $db->query('SELECT * FROM mhs');
$row_count = $stmt->rowCount();
INSERT, UPDATE, DELETE INSERT, UPDATE, DELETE
method exec()
$affected_rows = $db->exec("UPDATE table SET no=‘0001‘, nama=‘Agung’");
echo $affected_rows.' were affected’;
17
Manghindari
Manghindari SQL SQL Injek Injek
Prepared Statement
contoh:
$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);
INSERT INSERT
contoh:
$stmt = $db->prepare("INSERT INTO mhs(nim,nama,alamat)
VALUES(:nim,:nama,:alamat)");
$stmt->execute(array(':nim=>’01212’,
‘:nama’=>’Agus’,
’:alamat’=>’Solo’));
$affected_rows = $stmt->rowCount();
19
UPDATE UPDATE
contoh:
$stmt = $db->prepare("UPDATE mhs SET nama=:
nama WHERE id=:id");
$stmt->execute(array(':nama' => $nama ':id' =>
$id);
$affected_rows = $stmt->rowCount();
DELETE DELETE
contoh :
$stmt = $db->prepare("DELETE FROM mhs WHERE id=:id");
$stmt->execute(array(':id' => $id));
$affected_rows = $stmt->rowCount();
21
PHP Data Objects (PDO) PHP Data Objects (PDO)
PDO :: beginTransaction - Memulai transaksi
PDO :: comit - Komit transaksi
PDO :: __ construct - Membuat PDO mewakili koneksi ke database
PDO :: errorcode – mengambil SQLSTATE terkait dengan operasi terakhir pada koneksi basis data
PDO :: errorInfo - Ambil informasi kesalahan terkait dengan operasi terakhir pada koneksi basis data
PDO :: execute - Jalankan pernyataan SQL dan mengembalikan jumlah baris yang terkena
PDO :: query- Menjalankan pernyataan SQL, mengembalikan hasil set sebagai objek PDOStatement
PDO :: rollBack - Rolls back transaksi
PHP Data Objects (PDO) PHP Data Objects (PDO)
<?php
$dsn = 'mysql:dbname=barang;host=127.0.0.1';
$user = 'root';
$password = '';
try {
$koneksi = new PDO($dsn, $user, $password);
echo 'Koneksi Berhasil' ; } catch (PDOException $e) {
echo 'Koneksi Gagal: ' . $e->getMessage();
}
$sql = 'SELECT * FROM barang';
echo "<table border='1'>" ; echo "<tr>" ;
echo "<td>Kode</td>" ;
23
PHP Data Objects (PDO) PHP Data Objects (PDO)
echo "<td>Nama Barang</td>" ; echo "<td>Harga</td>" ; echo "<td>Jumlah</td>" ; echo "<td>Satuan</td>" ; echo "</tr>" ;
foreach ($koneksi->query($sql) as $rows) { echo "<tr>" ;
echo "<td>".$rows["kode_barang"]."</td>" ; echo "<td>".$rows["nama_barang"]."</td>" ; echo "<td>".$rows["harga_barang"]."</td>" ; echo "<td>".$rows["jumlah_barang"]."</td>" ; echo "<td>".$rows["satuan"]."</td>" ; echo "</tr>" ;
}
echo "</table>" ;
?>
Referensi Referensi
PHP Manual (http://www.php.net/docs.php)
25