Quantcast
Channel: Recent posts across whole site
Viewing all articles
Browse latest Browse all 49204

ေဒတာေဘ့ စိတၱဇ အလႊာ (Database abstraction layer)

$
0
0

ေဒတာေဘ့ စိတၱဇ အလႊာ (Database abstraction layer)

ပရုိဂရမ္ကုဒ္ တစ္မ်ိဳးတည္းကို အေျခခံလ်က္ မတူညီေသာ ေဒတာေဘ့စ္ဆာဗာမ်ားကို အသံုးျပဳခြင့္ ျပဳသည္။

ပရိုဂရမ္ေရးသားသူမ်ားသည္ မ်ားျပားလွစြာေသာ ေဒတာေဘစ့္ဆာဗာမ်ားကို လြယ္လင့္တကူ ေထာက္ပံ့ႏိုင္စြမ္းရွိေစရန္ ဒရူးပယ္လ္သည္ က်စ္လ်စ္ေသာေဒတာေဘ့စ္စိတၱဇအလႊာတစ္ခုကို ေထာက္ပံ့ေပးသည္။ ၎အလႊာ၏ ရည္ရြယ္ခ်က္မွာ ဒရူးပယ္က

မတူညီေသာဆာဗာမ်ားအတြက္ ကဲြျပားျခားနားစြာ ေရးသားရန္လိုအပ္ေသာ ေဒတာထိန္းခ်ဳပ္စာေၾကာင္း အစိတ္အပိုင္းမ်ားကို ထိန္းခ်ဳပ္ျပီး အေျခခံလံုျခံဳေရးစစ္ေဆးမႈမ်ားကို ေထာက္ပံ့ေပးေနခ်ိန္တြင္ ဆီကဲြ၏ သဒၵါအထားအသိုႏွင့္ ပါ၀ါစြမ္းအားတို႕၏

မူလအေျခအေနကို ထိန္းသိမ္းထားရန္ ျဖစ္သည္။

ဒရူးပယ္လ္ေဒတာေဘစ့္၏ ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းမ်ား အမ်ားစုကို db_query() သို႕ မဟုတ္ db_query_range() သို႕ လွမ္းေခၚျခင္းျဖင့္ လုပ္ေဆာင္ႏိုင္သည္။ ေမာ္က်ဴးေရးသားသူမ်ားသည္ မ်ားျပားလွစြာေသာ စာမ်က္ႏွာမ်ားေပၚတြင္ တင္ဆက္ျပသရန္၊ လိုအပ္ေသာ

ရလဒ္မ်ားကို ျပန္ပို႕ရန္၊ ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းမ်ားအတြက္ pager_query() ကို အသံုးျပဳျခင္း ႏွင့္ ေရွ႕ေနာက္ အစီအစဥ္ စီစဥ္ႏိုင္ေသာ ဇယားကြက္မ်ားအတြက္ သင့္ေလ်ာ္ေသာ ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းမ်ား ထုတ္လုပ္ျခင္းတို႔အတြက္ tablesort_sql() ကို အသံုးျပဳျခင္း

တို႕ကိုလည္း ထည့္သြင္းစဥ္းစားရသည္။

ဥပမာ- သင္ၾကိဳက္ရာ အသံုးျပဳသူတစ္ဦးမွ သိပ္မၾကာေသးမီက ေရးသားထားေသာ အေၾကာင္းအရာမ်ား(node)စာရင္းတစ္ခုကို ျပန္ပို႕လိုလွ်င္ ..ေအာက္တြင္ ေဖာ္ျပထားသည့္အတိုင္း ဆီကဲြ ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းကို တိုက္ရိုက္ မထုတ္ေပ။

<?php
SELECT n
.nid, n.title, n.created FROM node n WHERE n.uid = $uid LIMIT 0, 10;
?>

ထိုသို႕ သံုးမည့္အစား ဒရူးပယ္လ္ ဖန္ရွင္မ်ားကို လွမ္းေခၚႏိုင္သည္။

<?php
$result
= db_query_range('SELECT n.nid, n.title, n.created
FROM {node} n WHERE n.uid = %d'
, $uid, 0, 10);
while (
$node = db_fetch_object($result)) {
// Perform operations on $node->body, etc. here.
 
}
?>

db_prefix_tables()မွတဆင့္ ဇယားကြက္မ်ားကို နာမည္ အစ စာလံုးေပးျခင္းမ်ားကို ျပဳလုပ္ႏိုင္ရန္ "ႏုတ္ဒ္(၀ါ)အဖု" အနားတြင္ တြန္႕ကြင္းမ်ားကို အသံုးျပဳသည္။ အသံုးျပဳသူအသိအမွတ္ျပဳနံပါတ္တစ္ခု၏ ရွင္းလင္းလွသည့္ အသံုးျပဳမႈကို db_query()သို႕ ေဒတာထည့္သြင္းေပါက္တစ္ခု(argument)ထဲသို႕ ထည့္သြင္းလိုက္သည္။ သို႕မွသာ db_query_range() ေဒတာထည့္သြင္းေပါက္မ်ားထဲသို႕ ၀င္ေရာက္သြားမည္ ျဖစ္သည္။ ေနာက္ဆံုးတြင္ db_fetch_object()ကို အသံုးျပဳျခင္းျဖင့္ ရလာသည့္ ရလဒ္အစုကို ထပ္တလဲလဲျပဳလုပ္သည့္အမ်ားသံုးပံုစံ ဟူ၍ မွတ္ထားရေပမည္။
ကိန္းေသမ်ား
အမည္ တည္ေနရာ အေၾကာင္းအရာ
DB_QUERY_REGEXP includes/database.inc I_db_query_callback()ထဲတြင္ အစားထိုးထည့္ရမည့္ ပံုစံခြက္ေနရာမ်ား(placeholders) ကို ညႊန္ျပသည္။
ဖန္ရွင္မ်ား
အမည္ တည္ေနရာ အေၾကာင္းအရာ
db_affected_rows includes/database.pgsql.inc ယခင္ရွိျပီးသား ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းမွ ေျပာင္းလဲေသာ ေဒတာအတန္း(Row) အေရအတြက္ကို ဆံုးျဖတ္ေပးသည္။
db_check_setup includes/database.pgsql.inc ေဒတာေဘ့စ္ကို မွန္ကန္စြာ

တည္ေဆာက္ထားျခင္း ရွိ၊မရွိကို စစ္ေဆးေပးသည္။
db_column_exists includes/database.pgsql.inc သက္ဆိုင္ရာ ဇယားကြက္

(Table)ထဲတြင္ အတိုင္(Column)တစ္ခု ရွိမရွိ ကို စစ္ေဆးေပးသည္။
db_connect includes/database.pgsql.inc ေဒတာေဘစ့္ဆက္သြယ္မႈ(Connection)

တစ္ခုကို အစျပဳေပးသည္။
db_decode_blob includes/database.pgsql.inc ကိန္း၂လံုးအေျချပဳ(၀ါ)

ဘုိင္နရီစနစ္သံုး ၾကီးမားသည့္ေအာ့ဂ်က္(၀ါ)အရာ၀တၳဳ တန္ဖိုး(Binary Large OBject value)တစ္ခုမွ စာသားမ်ားကို ျပန္ပို႕ေပးသည္။
db_distinct_field includes/database.inc ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းတြင္ DISTINCT

(ထပ္ေနသည္မ်ားကို တစ္ခုအေနျဖင့္ယူျခင္း)စကားလံုး မရွိေသးပါလွ်င္ ၎စာေၾကာင္းတြင္ ၎DISTINCT အမွတ္သညာ(flag)ကို ထည့္ေပးသည္။
db_encode_blob includes/database.pgsql.inc ေသခ်ာစြာေဖာမက္ခ်ထားျပီး

ဘုိင္နရီစနစ္သံုးၾကီးမားသည့္ေအာ့ဂ်က္တန္ဖိုး(properly formatted Binary Large OBject value)ကို ျပန္ပို႕ေပးသည္။ ပို႕ဒရယ္က်ဴရဲ (PostgreSQL)စနစ္ တြင္မူ ဘိုက္ ဖီးဒ္(Byte field)တန္ဖိုးေနရာသို႕ ထည့္ရန္အတြက္ ေဒတာမ်ားကို ခ်ဳံ႕(encode)သည္။
db_error includes/database.pgsql.inc ယခင္ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းသည္ အမွားအယြင္း ရွိမရွိ စစ္ေဆးေပးသည္။
db_escape_string includes/database.pgsql.inc ဆီကဲြအသံုးျပဳထိုးေဖာက္၀င္ေရာက္တိုက္ခိုက္မႈမ်ား(SQL injection attacks) ကိုကာကြယ္ရင္း ေဒတာေဘ့စ္၏ ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းတစ္ခုတြင္ အသံုးျပဳရန္ အသံုးျပဳသူအတြက္

ေဒတာအသြင္း( user input)ကို ျပင္ဆင္ေပးသည္။ မွတ္ရန္ ။ ။ ၎ဖန္ရွင္သည္ ပို႕ဒရယ္က်ဴရဲ ဗားရွင္း ၇.၂ (သို႕) ၎ဗားရွင္းေနာက္ပိုင္း ကိုလိုအပ္သည္။
db_escape_table includes/database.inc လံုျခံဳသည့္စာလံုးမ်ားျဖစ္ရန္

အျမဲေျပာင္းလဲတတ္သည့္(dynamic)ဇယားကြက္အမည္၊အတုိင္(Column)အမည္၊ အကန္႕အသတ္(constraint)အမည္မ်ားကို ကန္႕သတ္ထားေပးသည္။
db_fetch_array includes/database.pgsql.inc အတန္းလိုက္ပံုစံေဒတာတည္ေဆာက္မႈ(Array)တစ္ခုအေနျဖင့္ ယခင္အသံုးျပဳျပီးေဒတာထိန္းခ်ဳပ္စာေၾကာင္းမွ ရလဒ္အတန္းလိုက္(row)တစ္ေၾကာင္းကုိ ဖတ္(Fetch)ေပးသည္။
db_fetch_object includes/database.pgsql.inc ေအာ့ဂ်က္(၀ါ)အရာ၀တၳဳ

(Object)တစ္ခုအေနျဖင့္ ယခင္အသံုးျပဳျပီးေဒတာထိန္းခ်ဳပ္စာေၾကာင္းမွ ရလဒ္အတန္းလိုက္(row)တစ္ေၾကာင္းကုိ ဖတ္(Fetch)ေပးသည္။
db_is_active includes/database.inc ေဒတာေဘ့၏အသံုးျပဳႏိုင္မႈေပၚမူတည္၍ ဘိုလီယယ္

(၀ါ)အမွန္အမွားတစ္ခုခု(Boolean)ကို ျပန္ပို႕ေပးသည္။
db_lock_table includes/database.pgsql.inc ဇယားကြက္တစ္ခုကို

အသံုးျပဳခြင့္ပိတ္ထားသည္။ ၎ဖန္ရွင္သည္ လုပ္ငန္း(transaction)တစ္ခုကို အလိုအေလ်ာက္စတင္ေစသည္။
db_placeholders includes/database.inc အမ်ိဳးအစားတစ္ခုတည္း၏

ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းသို႕ေဒတာအသြင္းေပါက္မ်ားအတန္းလိုက္(an array of query arguments)အတြက္ ပံုစံခြက္ေနရာ(placeholders)မ်ားကို ထုတ္လုပ္ေပးသည္။
db_prefix_tables includes/database.inc ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းတစ္ခုထဲတြင္

ဇယားကြက္မ်ား အားလံုးသို႕ ေဒတာေဘ့စ္အမည္၏ ေရွ႕ဆက္စာလံုးကို လိုက္တပ္ေပးသည္။
db_query_range includes/database.pgsql.inc အျမဲအလုပ္လုပ္သည့္

(Active)ေဒတာေဘ့စ္ထဲရွိ အကန္႕အသတ္ျဖင့္လုပ္ထားေသာ (limited-range) ေဒတာထိန္းစာေၾကာင္း တစ္ေၾကာင္းကို အလုပ္လုပ္ေစသည္။
db_query_temporary includes/database.pgsql.inc SELECT (ေရြးခ်ယ္)

ေပးသည့္ ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းတစ္ခုကို အလုပ္လုပ္ေစျပီး ယာယီဇယားကြက္တစ္ခုထဲကို ၎မွရလဒ္မ်ားကို သိမ္းဆည္းေပးသည္။
db_result includes/database.pgsql.inc ယခင္အသံုးျပဳသည့္ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းမွ

ရလာသည့္ ရလဒ္ အကြက္(Field)တစ္ခုခ်င္းစီသို႔ ျပန္ပို႕ေပးသည္။
db_rewrite_sql includes/database.inc ႏုတ္ဒ္(node)၊အမ်ိဳးအစား(taxonomy)ႏွင့္

မွတ္ခ်က္မ်ားတြင္ သံုးသည့္ ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းမ်ားကို ျပန္လည္ေရးသားေပးသည္။ ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းမ်ားကို စာရင္းျပဳျခင္းအတြက္ ၎ဖန္ရွင္ကို သံုးပါ။ JOIN ဟူေသာ စကားလံုးကို သံုးရမည့္အစား FROM table1,table2 ပံုစံ သဒၵါစည္းမ်ဥ္းကို

အသံုးမျပဳပါႏွင့္။
db_set_active includes/database.inc ေနာက္ပိုင္းတြင္အသံုးျပဳမည့္ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းမ်ားအတြက္ ေဒတာေဘ့စ္တစ္ခုကို ခလုတ္ဖြင့္ေပးသည္(Activate)
db_status_report includes/database.pgsql.inc ေဒတာေဘ့၏အေနအထားကို

သတင္းပို႕ေပးသည္။
db_table_exists includes/database.pgsql.inc ဇယားကြက္တစ္ကြက္ ရွိ၊ မရွိ စစ္ေဆးေပးသည္။
db_unlock_tables includes/database.pgsql.inc အသံုးျပဳခြင့္မဲ့(Unlock)

ဇယားကြက္မ်ားအားလံုးကို အသံုးျပဳခြင့္(Lock)ေပးသည္။ ၎ဖန္ရွင္သည္ အလိုအေလ်ာက္ လုပ္ငန္းတစ္ခုကို ျပီးေျမာက္ေစသည္။ (Comit a transaction)
db_version includes/database.pgsql.inc ေလာေလာဆယ္အသံုးျပဳေနေသာ

ေဒတာေဘ့ဆာဗာ၏ ေဆာ့၀ဲရ္ဗားရွင္းနံပါတ္ကို ျပန္ပို႕ေပးသည္။
pager_query includes/pager.inc စာမ်က္ႏွာအလုိက္ ေဒတာေဘ့စ္၏ ေဒတာထိန္းခ်ဳပ္စာေၾကာင္းတစ္ခုကို ျပန္ပို႕ေပးသည္။
tablesort_sql includes/tablesort.inc ဆီကြဲျဖင့္ေဒတာေရွ႕ေနာက္စီစဥ္သည့္

စကားအတဲြအဆက္တစ္ခုကို ဖန္တီးေပးသည္။
update_sql includes/database.inc ဆီကဲြေဒတာထိန္းခ်ဳပ္စာေၾကာင္းတစ္ခုကိုလုပ္ေဆာင္ေစျပီး

ေအာင္ျမင္မႈ(သို႕)ရႈံးနိမ့္မႈ တစ္ခုခုကို ျပန္အေၾကာင္းျပန္သည္။
_db_error_page includes/database.inc ပ်က္စီးဆံုးရႈံးေစႏိုင္ေသာေဒတာေဘ့အမွားအယြင္းမ်ားကိုျပသရန္ အကူအညီဖန္ရွင္။
_db_query includes/database.pgsql.inc db_query() အတြက္ အကူအညီဖန္ရွင္။
_db_query_callback includes/database.inc db_query() အတြက္ အကူအညီဖန္ရွင္။
_db_rewrite_sql includes/database.inc db_rewrite_sql အတြက္

အကူအညီဖန္ရွင္။


Viewing all articles
Browse latest Browse all 49204

Trending Articles