Pengenalan PHP PDO untuk databse MySQL

 Author : hadinug, 13 May, 2014, Komentar

php pdo


Sebelumnya kami telah menulis artikel tentang MySQLi, dan sekarang kami akan sedikit menjabarkan tentang penggunaan MySQL PDO. PDO singkatan dari "PHP Data Objects" dan sebuah firture antarmuka "ringan" dan konsisten untuk mengakses database di PHP. Meskipun nama itu tidak terlalu bagus, PDO merupakan cara yang cukup baik untuk mengakses database anda dengan PHP. 



Perbedaan PDO dengan MySQLi 

MySQLi dan PDO yang sangat mirip, namun keduanya memiliki dua perbedaan utama: 

  • PDO tidak memiliki fallback prosedural (mysqli_ * fungsi) 
  • MySQLi hanya bekerja dengan MySQL, PDO bekerja dengan 12 Database yang berbeda 


Starting Point

Untuk menggunakan PDO, diawal anda anda harus memeriksa apakah PHP telah menginstall plugin PDO. Anda bisa mencoba untuk menguji apakah php anda sudah terinstal librari atau plugin PDO dengan menjalankan $testPdo = new PDO(); dan melihat hasilnya. Jika terjadi error atau argumen tidak cocok, anda harus mengistal plugin php PDO terlebih dahulu. Dan apabila tertulis objek tidak ada, cobalah memeriksa file php.ini untuk melihat apakah extension = php_pdo_yoursqlserverhere.ext masih berupa komentar. Jika tidak, anda akan harus menginstal PDO - ini adalah di luar lingkup artikel ini. 


Koneksi

Sebelumnya kami berharap plugin PDO telah benar-benar terinstall di PHP anda, dan sekarang mari kita mulai dengan mengkoneksi ke database: 


$dsn = 'mysql: dbname = demo, host = localhost, port = 3306'; 
$username = 'root'; 
$password = ''; // isikan jika ada 
try { 
    $bb = new PDO($dsn,$username, $password);
}catch (PDOException $e) { 
    die ('Tidak dapat terhubung ke database: <br/>'. $e); 
} 


Penjelasan

Sepertinya ini sudah cukup jelas, kecuali untuk $dsn. DSN singkatan dari Data Source Name, ini memungkinkan untuk memasukan berbagai jenis masukan. Yang paling umum kami gunakan seperti kode diatas, string yang menjelaskan semua pengaturan koneksi database. Objek dalam blok try-catch - PDO akan melemparkan kesalahan ke PDOException ketika gagal saat melakukan koneksi ke database.


Penannganan kesalah atau error juga bisa dilakukan sebagai berikut:


$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 


atau langsung ke inisialisasi PDO: 


$db = new PDO($dsn,$username,$password, array ( 
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION 
)); 


Pertanyaan Dasar

PDO memiliki dua metode default: query dan exec, yang kedua nya berguna jika anda ingin mendapatkan jumlah baris record. Lihat contoh untuk kedua metode ini: 


$statement = "SELECT * FROM `makanan`  WHERE `sehat` = 0"

$makanan = $db->query($statement);



Dengan megasumsi permintaan kita adalah benar, variable $makanan sekarang menjadi objek PDOStatement, yang dapat kita gunakan untuk mengambil hasil atau memeriksa berapa banyak baris yang dikeluarkan oleh penyataan ini.


Jumlah baris 

PDO memiliki metode rowCount untuk menghitung jumlah baris atau record sebuah query table, metode ini tidak dijamin untuk bekerja dengan setiap driver SQL tapi ia bekerja dengan baik di MySQL. 


echo $makanan->rowCount(); 


Looping Hasil Query

Berikut ini cara menampilkan hasil query:


foreach ($makanan->fetchAll() as $m) { 
    echo $m['nama']. '<br />'; 
} 


Satu hal yang perlu diingat adalah bahwa PDO juga memasok metode Fetch, yang hanya akan mengembalikan hasil yang pertama, yang berguna jika anda hanya meng-query untuk satu hasil. 


Escape from user 

Anda mungkin pernah mendengar tentang (mysqli_) real_escape_string, yang digunakan untuk mengamankan input pengguna. PDO menawarkan sebuah metode yang disebut kutipan, yang akan menempatkan tanda kutip pada string yang diberikan (jika diperlukan) dan untuk meloloskan karakter khusus: 


$input: ini adalah yang str'ing  'a''' cukup berba'haya 

Berikut ini cara melepaskan diri dari kutipan input string yang berbahaya: 


$db->quote($input)


Exec

Seperti disebutkan di atas, anda dapat menggunakan metode exec untuk pernyataan SQL UPDATE, DELETE dan INSERT, dan menghitung jumlah baris: 


$pernyataan = "DELETE FROM `makanan`  WHERE `sehat` = 1;  
echo $db->exec($pernyataan); 


Prepare Statement

Meskipun metode exec dan query masih banyak digunakan dan didukung oleh PHP. Dan akan lebih baik jika kita menggunakan prepare pada PDO. Kenapa? sebagian besar untuk satu alasan: Lebih aman. Pernyataan prepare memasukkan parameter ke dalam permintaan yang sebenarnya, untuk menghindari banyak potensi SQL Injection. 


$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 


Berikut ini contoh statement SQL PDO dengan menggunakan metode prepare:


$statement = $db->prepare('SELECT * FROM makanan WHERE `nama`=? AND `sehat`=?');
$statement2 = $db->prepare('SELECT * FROM makanan WHERE `nama`=:nama AND `sehat`=:sehat)';


Seperti yang anda lihat ada dua cara untuk membuat parameter, yaitu dengan menyebutkan namanya dan yang tidak disebutkan namanya (tidak bisa menggunakan keduanya dalam satu pernyataan). 


Selanjutnya anda dapat menggunakan bindValue untuk memasukkan inputan: 


$statement->bindValue(1, 'Kue');
$statement->bindValue(2, true);

$statement2->bindValue(':nama', 'Burger');
$statement2->bindValue(':sehat', false);


Perhatikan bahwa anda akan perlu menyertakan titik dua (:) bila menggunakan parameter bernama. PDO juga memiliki metode bindParam, yang akan mengikat nilai dengan referensi, berarti hanya akan mencari nilai ketika pernyataan dijalankan. 


Sekarang setelah smeunya telah siap, saat nya mengeksekusi pernyataan diatas: 


$statement->execute();
$statement2->execute();

// Get our results:
$cake = $statement->Fetch();
$pie  = $statement2->Fetch();


Atau anda juga dapat menggunakan sebuah array sebagai parameter, seperti ini: 


$statement->execute(array(1 => 'Kue', 2 => true));
$statement2->execute(array(':nama' => 'Burger', ':sehat' => false));


Kesimpulan

PDO adalah cara yang sangat baik untuk mengakses database dengan PHP. Kecuali anda memang menolak dan tidak suka untuk menggunakan pendekatan Objek Orinted Programming atau terlalu terbiasa dengan nama metode MySQLi, tidak ada alasan untuk tidak menggunakan PDO. 


Dan akan lebih baik jika sepenuhnya anda beralih ke penggunakan pernyataan prepare, yang lebih mudah dan aman dari SQL Injection!. Materi selengkapnya bisa anda baca di situs PHP untuk PDO

 
Bagikan halaman ke sosial media
 
Tags :   mysql    pdo       

Tentang Penulis

writer hadinug
Web Developer di PT. Yafii Solusi Internasional

Link: http://ysi.co.id

   Komentar Anda