ကဗ်ာ/ရသ/နည္းပညာ

Connect database using PDO

May 11, 2014

server ထဲဖိုဒါတစ္ခုအရင္ေဆာက္လိုက္ပါ ။ Database ကုိ PDO(PHP Data Object) နည္းနဲ႕ခ်ိတ္ဆက္တာကုိရွင္းျပမွာပါ။
PDO က PHP 5.2 ေနာက္ပိုင္းမွပါလာတာလို႔သိရပါတယ္။ PDO ကုိျမန္ဆန္လြယ္ကူမွဳရွိတာရယ္၊Security အားေကာင္းတာရယ္
ေၾကာင့္ ေနာက္ပိုင္းမွာသူ႔ကုိပဲသံုးဖို႔ တိုက္တြန္းလာၾကပါတယ္။PDOက Class တစ္ခုပါ ဒါေၾကာင့္သူ႕ကုိေခၚသံုးတဲ့အခါ 'new' keyword
နဲ႕ instantiate လုပ္ေပးရမွာပါ။ စမေလ့လာမီွ PHP myadmin ထဲမွာ အဆင္ေျပတဲ့နာမည္နဲ႕database တစ္ခုအရင္ဖန္တီးထားလိုက္ပါဦး။
ဖိုဒါထဲမွာ class.database.php နာမည္နဲ႕ ဖိုင္တစ္ဖိုင္ေဆာက္လုိက္ပါ။အဲ့ဒီဖိုင္ထဲမွာ class တစ္ခုေဆာက္မယ္
<?php
class dbConnection{
protected $db_conn;

public $db_name='shoutbox';//ဒီေနရာမွာသူငယ္ခ်င္းဖန္တီးထားတဲ့ database name ကုိေရးေပး
public $db_user='root'; // local server တိုင္းကuser root နဲ့ Pass က Null ပဲရွိတာမ်ားတယ္။
public $db_pass='';
public $db_host='localhost';
}
?>
public,protected တို႔က Access modifire ေတြ ။ဘယ္သူေတာ့ခြင့္ျပဳတယ္ ဘယ္သူေတာ့ခြင့္မျပဳဘူးလို႔သတ္မွတ္တာ။Public အစား
var လို႔ေရးလည္းရပါတယ္။ ဘယ္ class ကမဆိုယူသံုးလို႔ရတယ္လို႔ေျပာတာပါ။protected ကေတာ့လက္ရွိ class နဲ႕ child class မွာ
ရပါတယ္။က်န္တဲ့ class ေတြကေနလွမ္းေခၚလို႔မရပါဘူး ။ ဒါကုိရွင္းျပခဲ့ၿပီးၿပီလိုေတာ့ထင္ပါတယ္။
ဒါဆို Server data အတြက္ variable ေၾကျငာတာၿပီးၿပီ။ database ခ်ိတ္ေတာ့မယ္ ။OOP way ဆိုေတာ့ function တစ္ခုေခၚသံုးရေအာင္။
function connect(){
$this->db_conn=new PDO("mysql:host=$this->db_host;dbname=$this->db_name",$this->db_user,$this->db_pass);
return $this->db_conn;
}
လက္ရွိ active ျဖစ္ေနတဲ့ class ထဲက data ကုိေခၚသံုးခ်င္ရင္ $this->လို႔သံုးရတယ္ ။ PDO ေရးထံုးက database အမ်ိဳးအစားကုိကြင္း
ထဲမွာထည့္ေၾကျငာေပးရလို႕ PDO("mysql: လို႕စေရးရတယ္။တစ္ျခား database အမ်ိဳးအစားဆိုလည္း အဲဒီအမ်ိဳးအစားေပါ့။ဥပမာဆို
PDO("odbc: အဲဒီလို ။ ၿပီးသူ႔ မူလClass ထဲကvariable host နဲ႕ dbname ကုိလက္ရွိ Server က data
ေတြ နဲ႕ထည့္သြင္းသတ္မွတ္ေပးရတယ္ ။ ဒါေၾကာင့္("mysql:host=$this->db_host;dbname=$this->db_name" လို႕ျဖစ္လာတယ္။
ဒါနဲ႕မျပီးေသးဘူး။က်န္တဲ့ db user နဲ႕ pass ကုိ ေကာ္မာေလးနဲ့ဆက္ထည့္ေပးရေသးတယ္။ဒီေတာ့
PDO("mysql:host=$this->db_host;dbname=$this->db_name",$this->db_user,$this->db_pass) ရယ္လို႔ျဖစ္လာတယ္။
တစ္ေၾကာင္းတည္းနဲ႕ ခ်ိတ္ဆက္မွဳ အၿပီးအစီးရပါတယ္.. မခက္ပါဘူးေနာ္။return $this->db_conn က
function ဆိုေတာ့ return value ထည့္ေပးလိုက္တာ ။ ခ်ိတ္ဆက္မွဳကုိ function မသံုးဘဲလုပ္မယ္ဆိုရင္ return keyword မလိုဘူး။
ေသခ်ာေအာင္ try - catch နဲ႕ စစ္ၾကည့္ရေအာင္ ။db_conn ကုိရိုးရိုး if နဲ႔စစ္လိုက္မယ္ဆိုရင္လည္းရပါတယ္ ။ အခုေတာ့ try-catch ပဲသံုး
ၾကည့္မယ္ ။ ေစာေစာက Code မွာ ဒီလိုေလးျဖည့္ေရးလိုက္မယ္။
function connect(){
try{
// ေစာေစာက PDO နဲ႕ခ်ိတ္တဲ့ ကုတ္
} catch (PDOException $e){
return $e->getmessage();
}
}
catch ထဲမွာ error ထုတ္ျပဖို႕ သတ္မွတ္ထားၿပီးသား Exception ေတြရွိပါတယ္။ အဲ့ဒီ exception ေတြကုိ $e ထဲ Catch သတ္မွတ္ေပးရပါတယ္။
အခုက PDO ခ်ိတ္ဆက္မွဳျဖစ္လို႔ Exception က PDOException $e ရယ္လို႔ျဖစ္လာပါတယ္။တျခားဟာေတြအတြက္တျခား exception ေတြရွိပါတယ္။
ေစာေစာကေရးခဲ့တာေတြျပန္ၾကည့္ရေအာင္။ ကုတ္အျပည့္အစံုကဒီလိုျဖစ္သြားလိမ့္မယ္။
<?php
class dbConnection{
protected $db_conn;

public $db_name='shoutbox';
public $db_user='root';
public $db_pass='';
public $db_host='localhost';

function connect(){
try{
$this->db_conn=new PDO("mysql:host=$this->db_host;dbname=$this->db_name",$this->user,$this->db_pass);
return $this->db_conn;
} catch (PDOException $e){
return $e->getmessage();
}
}
}
?>
server မွာ run ၾကည့္ Error မရွိရင္ ခ်ိတ္ဆက္မွဳအိုေခေနၿပီ။ PDO နဲ႕ခ်ိတ္ဆက္မွဳကုိဒီေလာက္နဲ႕ပဲနားလိုက္ပါရေစ။
လက္ေတြ႕မွာေတာ့ ဒီ class ကုိတစ္ဖိုင္သပ္သပ္ထား ၿပီး data အသြင္းအထုတ္အတြက္ သပ္သပ္
function တစ္ခုေရး ၿပီး manage လုပ္ေပးရမွာပါ ။

No comments:

Post a Comment