PDO singkatan dari PHP Data Objects. Mulai diperkenalkan pada PHP vérsi 5 yang dirilis tahun 2004 untuk menggantikan perintah PHP mysql (misalnya mysql_connect dan mysql_query). Sejak PHP vérsi 7 malah perintah PHP mysql sudah tidak dikenal lagi, lalu kita “dipaksa” memakai perintah lain misalnya mysqli (ada tambahan huruf i) atau PDO. Pemaksaan ini demi kebaikan kita, sebab PHP mysql mempunyai banyak kelemahan yang sering dimanfaatkan peretas (hacker) untuk membobol sérver.

Secara pribadi, saya lebih memilih langsung mengajarkan PDO kepada siswa/mahasiswa saya, dari pada mengajarkan mysqli kemudian menyusul PDO. Mengapa? Karena keterbatasan waktu dan justru makin membingungkan siswa yang sudah pusing dengan pelajaran Pemrograman Web.

Untuk Kompeténsi Keahlian MM dan TKJ kurikulum 2013, Pemrograman Web hanya diajarkan di kelas 10 seméster 2. Waktu sesingkat ini jelas sulit menciptakan siswa SMK yang siap membuat aplikasi web kelas jempolan. Hanya siswa yang ulet dan mau belajar sendiri-lah yang bisa menguasainya. Belajar bahasa pemrograman seperti belajar Bahasa Inggris. Harus sering dipraktékkan setiap hari, jangan hanya di dalam kelas saat pelajaran sedang berlangsung.

Beberapa keistiméwaan PDO dibandingkan dengan mysqli adalah:

  1. PDO mendukung sampai 12 drivers (MySQL, Microsoft SQL Server / SQL Azure, Oracle, SQLite, PostgreSQL, IBM Informix, IBM DB2, ODBC, Cubrid, FreeTDS, Firebird, dan 4D) sedangkan mysqli hanya mendukung 1 saja yaitu MySQL.
  2. PDO mendukung Named Parameters, sedangkan mysqli tidak atau belum mendukung.
  3. PDO mendukung Prepared Statements di sisi client, sedangkan musqli tidak atau belum mendukung.

Cara konéksi PDO dan mysqli.

// PDO.
$koneksi = new PDO("mysql:host=localhost;dbname=database", 'username', 'password');
 
// mysqli gaya prosedural. Mirip dengan mysql yang dihilangkan mulai PHP versi 7.
$koneksi = mysqli_connect('localhost', 'username', 'password', 'database');
 
// mysqli gaya OOP.
$koneksi = new mysqli('localhost', 'username', 'password', 'database');

Contoh Named Parameters yang tidak atau belum ada di mysqli:

$parameter = array(':username' => 'mawan', ':password' => md5('rahasia'));
     
$stmt = $koneksi->prepare('
    SELECT * FROM users
    WHERE username = :username
    AND password = :password
');
     
$stmt->execute($parameter);

:username dan :password adalah Named Parameters (paraméter yang diberi nama, bukan paraméter berbentuk ?).

PDO juga bisa tidak memakai Named Parameters seperti mysqli, sehingga penulisannya menjadi seperti ini:

$stmt = $koneksi->prepare('
    SELECT * FROM users
    WHERE username = ?
    AND password = ?
');
     
$stmt->execute(['mawan', md5('rahasia')]);

Modul-modul yang tersedia pada tutorial ini adalah:

Untuk mempraktékkan ini, siswa harus membuat database bernama tgs1.
Di dalam database itu dibuat tabel bernama tugas1 dengan struktur sebagai berikut:

  • username > varchar(20) > Primary Key
  • password > char(32) > Index
  • nama > varchar(30) > Index
  • lahir > date
  • nilai > decimal(5,2)

hapus.php mirip seperti cari.php yaitu menanyakan username yang akan dihapus, sedangkan hapus2.php mirip seperti  tambah2.php atau ubah3.php hanya saja perintahnya bukan “insert into” atau “update” melainkan “delete from tugas1 where username=$username”. Dua file php terakhir ini disisakan untuk PR. Silakan dibuat sendiri.

Hasil yang diharapkan adalah seperti di bawah ini:

Save

Save

Save

Save

Save

Save

Save

Save

Save

Save

Save

Save

Save