PHP, PDO (PHP Data Obserts) တွင်ဒေတာဘေ့စ်အမျိုးအစားများကိုချိတ်ဆက်ရန်နှင့်လည်ပတ်ရန်ပေါ့ပါးသောတသမတ်တည်းနည်းလမ်းကိုထောက်ပံ့ပေးသောဒေတာဘေ့စ် access actstraction abstraction actstraction actstraction အလွှာတစ်ခုဖြစ်သည်။ PDO ကိုအသုံးပြုသောအခါ PDO :: __ တည်ဆောက်ခြင်း မှတစ်ဆင့် PDO OFF ကိုပထမဆုံးဖန်တီးရန်လိုအပ်ပြီး၎င်းသည်ဒေတာဘေ့စ်နှင့်အပြန်အလှန်ဆက်သွယ်နိုင်သည်။ ဤဆောင်းပါးတွင် PDO ၏အခြေခံအသုံးပြုမှုကိုအသေးစိတ်ရှင်းပြပါမည်။
PDO သည် developer များကို developer များက developer များဖြစ်သောဒေတာဘေ့စ်, postgresql, sqlite စသဖြင့်ကွဲပြားခြားနားသောဒေတာများကိုလုပ်ဆောင်ရန်ခွင့်ပြုထားသောစာကြည့်တိုက်တစ်ခုဖြစ်သည်။ ၎င်းသည်ကြိုတင်သတ်မှတ်ထားသောထုတ်ပြန်ချက်များကိုထောက်ခံရုံသာမက SQL injection တိုက်ခိုက်မှုများကိုလည်းကာကွယ်ပေးသည်။ ခေတ်သစ် PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဒေတာဘေ့စ်လုပ်ငန်းများကိုလုပ်ဆောင်ရန်နည်းလမ်းတစ်ခုဖြစ်သည်။
PDO မှတစ်ဆင့် developer များမှတဆင့်ဒေတာဘေ့စ်စနစ်တစ်ခုစီအတွက်မတူညီသောဆက်သွယ်မှုကုဒ်များကိုရေးရန်မလိုအပ်ပါ။
PDO :: __ တည်ဆောက်ခြင်း သည် PDO အတန်းအစား၏ဆောက်လုပ်ရေးဖြစ်သည်, PDO အရာဝတ်ထုများကိုဖန်တီးရန်အသုံးပြုသည်။ အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
<span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-variable">$dsn</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$options</span></span><span>);
</span></span>$ DSN (ဒေတာအရင်းအမြစ်အမည်) - ဒေတာအရင်းအမြစ်အမည်, ဒေတာဘေ့စ်အမျိုးအစား, ဒေတာဘေ့စ်အိမ်ရှင်, ဒေတာဘေ့စ်, ဒေတာဘေ့စ်အမည်နှင့်အခြားအချက်အလက်များ။
$ username : ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန် Username လိုအပ်သည်။
$ စကားဝှက် - ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်လိုအပ်သောစကားဝှက်။
$ ရွေးစရာများ - PDO ၏အပြုအမူကိုပြင်ဆင်ရန်ရွေးချယ်စရာ pareter သည် (ဥပမာခြွင်းချက် mode, character setting settings စသည်) ။
<span><span><span class="hljs-variable">$dsn</span></span><span> = </span><span><span class="hljs-string">'mysql:host=localhost;dbname=testdb;charset=utf8'</span></span><span>;
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">'root'</span></span><span>;
</span><span><span class="hljs-variable">$password</span></span><span> = </span><span><span class="hljs-string">''</span></span><span>;
</span><span><span class="hljs-variable">$options</span></span><span> = [
PDO::</span><span><span class="hljs-variable constant_">ATTR_ERRMODE</span></span><span> => PDO::</span><span><span class="hljs-variable constant_">ERRMODE_EXCEPTION</span></span><span>, </span><span><span class="hljs-comment">// ချွင်းချက်မှအမှား mode ကိုသတ်မှတ်ပါ</span></span><span>
PDO::</span><span><span class="hljs-variable constant_">ATTR_DEFAULT_FETCH_MODE</span></span><span> => PDO::</span><span><span class="hljs-variable constant_">FETCH_ASSOC</span></span><span> </span><span><span class="hljs-comment">// Associative Array သို့ default data ရယူထားသောနည်းလမ်းကိုသတ်မှတ်ပါ</span></span><span>
];
</span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-variable">$dsn</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$options</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"အောင်မြင်စွာဆက်သွယ်မှု!"</span></span><span>;
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ဆက်သွယ်မှုမအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span></span>ဒီနေရာမှာ $ DSN တွင်ဒေတာဘေ့စ်အမျိုးအစား (MySQL), ဒေတာဘေ့စ်အိမ်ရှင် (localhost), ဒေတာဘေ့စ်အမည် (Testdb) နှင့်ဇာတ်ကောင် set (UTF8) တွင် database name (Testdb) နှင့် Claits Set (Testdb) တို့ပါ 0 င်သည်။
PDO :: Attr_ermode => PDO :: ErrMode_Exception ကို ခြွင်းချက်လုပ်ရန် ErrMode_Exception ကိုသုံးပါ။ ဤနည်းအားဖြင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုသို့မဟုတ်မေးမြန်းမှုအမှားများဖြစ်ပေါ်သောအခါ PDO သည် ခြွင်းချက် တစ်ခုချလိမ့်မည်။
PDO :: Att_Default_Fets_fetch_Mode => PDO :: STO :: FETT_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_AST_SAST)
ကွဲပြားခြားနားသောဒေတာဘေ့စစနစ်များကွဲပြားခြားနားသော DSN ပုံစံများကိုလိုအပ်သည်။ ဤတွင်အများသုံးဒေတာဘေ့စ်အမျိုးအစားများ DSN ပုံစံများ:
<span><span><span class="hljs-variable">$dsn</span></span><span> = </span><span><span class="hljs-string">'mysql:host=localhost;dbname=testdb;charset=utf8'</span></span><span>;
</span></span> <span><span><span class="hljs-variable">$dsn</span></span><span> = </span><span><span class="hljs-string">'pgsql:host=localhost;port=5432;dbname=testdb;'</span></span><span>;
</span></span> <span><span><span class="hljs-variable">$dsn</span></span><span> = </span><span><span class="hljs-string">'sqlite:/path/to/database.db'</span></span><span>;
</span></span> <span><span><span class="hljs-variable">$dsn</span></span><span> = </span><span><span class="hljs-string">'sqlsrv:Server=localhost;Database=testdb;'</span></span><span>;
</span></span>PDO သည်ဒေတာဘေ့စ်ဆက်သွယ်မှုချိတ်ဆက်သောအခါ configure လုပ်နိုင်သောအသုံးများသောဆက်သွယ်မှုရွေးချယ်စရာအချို့ကိုပေးသည်။
PDO :: Attr_ermode : အမှား mode ကိုသတ်မှတ်သည်။
PDO :: ErrMode_silent : အသံတိတ် mode, အမှားအယွင်းများမရှိ (ပုံသေတန်ဖိုး)
PDO :: ErrMode_warning : သတိပေးစနစ်, PHP သတိပေးချက်။
PDO :: ErrMode_Exception : ချွင်းချက်စနစ်, PoException ချွင်းချက်ချခြင်း။
PDO :: Attr_Default_fetch_Mode : default data rescription method ကိုသတ်မှတ်သည်။
PDO :: fetter_assoc : Associative Array ။
PDO :: FETL_OBJ : အရာဝတ်ထုကိုပြန်ပို့သည်။
PDO :: FETT_Num : Numeric Index ခင်းကျင်း။
PDO :: Attr_emulate_prepes : Preprocessing ထုတ်ပြန်ချက်များကိုတုပရန်ရှိမရှိသတ်မှတ်သည်။
False : Simulated မဟုတ်ဘဲဒေတာဘေ့စ်၏ preprocessing ထုတ်ပြန်ချက်များကိုသုံးပါ။
TRUE : preprocessing ထုတ်ပြန်ချက်များကိုတုပ။
<span><span><span class="hljs-variable">$options</span></span><span> = [
PDO::</span><span><span class="hljs-variable constant_">ATTR_ERRMODE</span></span><span> => PDO::</span><span><span class="hljs-variable constant_">ERRMODE_EXCEPTION</span></span><span>,
PDO::</span><span><span class="hljs-variable constant_">ATTR_DEFAULT_FETCH_MODE</span></span><span> => PDO::</span><span><span class="hljs-variable constant_">FETCH_ASSOC</span></span><span>,
PDO::</span><span><span class="hljs-variable constant_">ATTR_EMULATE_PREPARES</span></span><span> => </span><span><span class="hljs-literal">false</span></span><span>
];
</span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-variable">$dsn</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$options</span></span><span>);
</span></span>PDO :: __ တည်ဆောက်ခြင်း , ဒေတာဘေ့စ ် ဆက်သွယ်မှုမအောင်မြင်ပါက, ထို့ကြောင့်ကျွန်ုပ်တို့သည် ကြိုးစားမှုကိုသုံးနိုင်သည်။
<span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-variable">$pdo</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">PDO</span></span><span>(</span><span><span class="hljs-variable">$dsn</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>, </span><span><span class="hljs-variable">$password</span></span><span>, </span><span><span class="hljs-variable">$options</span></span><span>);
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"数据库ဆက်သွယ်မှုမအောင်မြင်ပါ: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span></span>ခြွင်းချက်များကိုဖမ်းယူခြင်းအားဖြင့်အမှားတစ်ခုဖြစ်သည့်အခါတွင်ပရိုဂရမ်ကိုတိုက်ရိုက်ပျက်ကျခြင်းမှကာကွယ်ရန်တားဆီးနိုင်သည်။ အမှားအချက်အလက်များကိုလည်းမှတ်တမ်းတင်နိုင်သည်။
PDO :: __ တည်ဆောက်မှု သည် PDO အရာဝတ်ထုများကိုဖန်တီးခြင်းအတွက်အဓိကလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဒေတာဘေ့စ်သို့ဆက်သွယ်မှုများကိုအလွယ်တကူအကောင်အထည်ဖော်ရန်ဤလုပ်ဆောင်မှုကိုသုံးပါ။ ဒေတာဘေ့စ်တစ်ခုကိုချိတ်ဆက်သောအခါ PDO အပြုအမူကိုပြုပြင်ရန် DSN, Database Username, Password နှင့် Optional Connection Options အချို့ကိုဖြတ်သန်းလေ့ရှိသည်။
PDO ၏အခြေခံအသုံးပြုမှုကိုကျွမ်းကျင်ပြီးသောအခါ, သင်သည်အမျိုးမျိုးသောဒေတာဘေ့စ်အမျိုးမျိုးနှင့်ချိတ်ဆက်နိုင်ပြီး PDO မှပေးသောကြွယ်ဝသောလုပ်ဆောင်ချက်များမှတစ်ဆင့်အချက်အလက်များကိုလုပ်ဆောင်နိုင်သည်။ သင်ရိုးရှင်းသော 0 က်ဘ်အပလီကေးရှင်းများ (သို့) ရှုပ်ထွေးသော Enticrosise အဆင့်စနစ်များကိုတီထွင်ခြင်းရှိမရှိ PDO သည်သင့်အားထိရောက်စွာလုံခြုံသောဒေတာဘေ့စ်စစ်ဆင်ရေးအထောက်အပံ့ဖြင့်ပေးနိုင်သည်။
သက်ဆိုင်သောတက်(ဂ်)များ:
PDO