Kenapa harus menggunakan PDO di php

Kenapa harus menggunakan PDO di php

Apa kabar semua, oke kali ini saya mau bahas PDO di pemrograman php, untuk yang sering buat web mungkin sudah tidak asing dengan pengkoneksian dbms(database) , di php ada beberapa driver coding koneksi yang paling terkenal adalah mysqli dan PDO, oke kali ini kita akan bahas PDO alias PHP DATA OBJECT, kenapa sih harus menggunakan PDO tidak mysqli. alasannya adalah.

pertama, PDO ini fleksibel bisa menggukan database apa saja, sedangkan mysqli hanya support database mysql berikut source kode beberapa koneksi database menggunakan PDO, perhatikan berikut

<?php

//koneksi microsoft sql server dan sybase
  $con = new PDO("mssql:host=$host;dbname=$dbname, $user, $pass");
  $con = new PDO("sybase:host=$host;dbname=$dbname, $user,$pass");
 
//koneksi MySQL
  $con = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
 
//koneksi sqlite
  $con = new PDO("sqlite:database.db");

?>



bandingkan dengan mysqli

<?php

$con = mysqli_connect($host,$user,$pass,$dbname);

?>

PDO hampir support semua DBMS sedangkan mysqli hanya support mysql, ini artinya jika anda menggunakan PDO dan anda ingin migrasi ke DBMS lain, anda tidak perlu merombak semua source kode anda, anda hanya perlu merubah source kode koneksi-nya saja, fleksible bukan ?!

kedua, di mysqli untuk menangkal SQL Injection biasanya orang-orang menggunakan mysqli_escape_string fungsi ini berguna untuk memfilter kutip satu ( ' ) , menurut saya ini kurang aman, apa jadinya jika orang-orang yang mengerti mengkonvert kutip satu tersebut ke hexadecimal atau ke bentuk lain, bisa jadi tidak terfilter. Berbeda dengan mysqli di PDO ada yang disebut Prepared statement, apa itu prepared statement ? itu adalah sebuah fitur yang disediakan, dimana kita bisa mengirim query secara terpisah antara query inti dengan “data” dari query. Tujuannya, agar query menjadi lebih aman dan cepat.

contoh kode :

$kuery = $pdo->prepare("SELECT DISTINCT * FROM post WHERE id=:id");
$kuery->bindparam(':id',$id,PDO::PARAM_STR);

$kuery->execute();
$fdgb = $kuery->fetchAll(PDO::FETCH_ASSOC);
foreach($fdgb as $post)
{
//looping
}

dikode tersebut parameter $id diwakili oleh :id  di kuery tersebut, kode prepared statemen di atas sudah saya buktikan dengan SQLMAP tidak bisa di-jebol. sekian tulisan kali ini.


Posted on