ဒေတာဘေ့စ်လုပ်ငန်းများအတွက် PHP အတွက် PHP ကိုအသုံးပြုသောအခါ, နောက် function သည်အထူးသဖြင့်သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းများသို့မဟုတ်အသုတ်လုပ်ထုံးလုပ်နည်းများကိုကွပ်မျက်ခံရသည့်အခါရလဒ် Multi-rights function ကိုအသုံးပြုလေ့ရှိသည်။ သို့သော်လုံခြုံစိတ်ချရသောစနစ်ကိုပြောင်းလဲခြင်းသို့မဟုတ်ဒေတာဘေ့စ်အပြန်အလှန်ဆက်သွယ်မှုလုံခြုံရေးအတွက်ပိုမိုမြင့်မားသောလိုအပ်ချက်များရှိပါက၎င်းကိုပိုမိုဂရုတစိုက်အသုံးပြုသင့်သည်။
ဤဆောင်းပါးသည်လက်တွေ့ မှစတင်. နောက်လာမည့် _result () ၏ဘုံအသုံးပြုမှုကိုပြုလုပ်သွားမည်ဖြစ်ပြီး,
Next_result () သည် MySQLI extension တွင်လက်ရှိရလဒ်ကိုကျော်လွန်ပြီးနောက်ရလဒ်ကိုရွေ့လျားစေသည့် MySQLI extension တွင်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဥပမာအမျိုးမျိုးပါ 0 င်သည့်စုံစမ်းမှုတစ်ခုကိုလုပ်ဆောင်သည့်အခါဥပမာ -
CALL getUserData(); SELECT NOW();
နောက်ရလဒ်ကိုရယူရန်ပထမရလဒ်ကိုပြင်ဆင်ပြီးနောက်သင် Next_result () ကို ခေါ်ရန်လိုအပ်သည်။
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
$query = "CALL multi_result_procedure()";
if ($mysqli->multi_query($query)) {
do {
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
} while ($mysqli->more_results() && $mysqli->next_result());
}
အထက်ပါကုဒ်သည်ပုံမှန်အားဖြင့်ရလဒ်မျိုးစုံကိုကိုင်တွယ်နိုင်သည်,
"Safe Mode" သည်သင်၏လျှောက်လွှာအလွှာကိုယ်တိုင်ကအကောင်အထည်ဖော်နိုင်သည့်လုံခြုံရေးစနစ်တစ်ခုသို့မဟုတ်လည်ပတ်မှုဝန်းကျင်ရှိအချို့သောလုပ်ဆောင်ချက်များနှင့်အပြုအမူများကိုကန့်သတ်နိုင်သည်။ မည်သည့်နေရာ၌ရှိပါစေ, အောက်ပါအချက်များမှာအာရုံစိုက်သင့်သည်။
SQL ကိုတိုက်ရိုက်ခွဲထုတ်ခြင်းသည်ဆေးထိုးတိုက်ခိုက်မှုများကိုဖြစ်ပေါ်နိုင်သည်။
$stmt = $mysqli->prepare("CALL getUserData(?)");
$userId = 5;
$stmt->bind_param("i", $userId);
$stmt->execute();
do {
if ($result = $stmt->get_result()) {
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
} while ($stmt->more_results() && $stmt->next_result());
ရလဒ်အလွန်အကျွံသုံးစွဲမှုကြောင့် 0 န်ဆောင်မှုခြွင်းချက်များကိုရှောင်ပါ။
$maxResults = 5;
$counter = 0;
do {
if ($result = $stmt->get_result()) {
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
$counter++;
if ($counter >= $maxResults) {
error_log("ရလဒ်အစုသည်အပြောင်းအလဲများ၏အများဆုံးအရေအတွက်ထက်ကျော်လွန်,အတင်းအကျပ်ဆိုင်းငံ့");
break;
}
} while ($stmt->more_results() && $stmt->next_result());
connection timeout မှတဆင့် MySQLI_OPTOOTS မှတဆင့် MySQLI_OPTOOTS မှတစ်ဆင့်မှတ်တမ်းအမှားမှတ်တမ်းများကိုပိတ်ထားပါ။
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli();
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5);
$mysqli->real_connect("localhost", "username", "password", "database");
try {
// Execution ကြေငြာချက်ယုတ္တိဗေဒ
} catch (mysqli_sql_exception $e) {
error_log("ဒေတာဘေ့စ်အမှား: " . $e->getMessage());
}
Gitbox.net မှပေးသောဖွံ့ဖြိုးရေးပတ် 0 န်းကျင်သို့မဟုတ်ဝေးလံခေါင်သီသောဒေတာဘေ့စ်များကိုချိတ်ဆက်သောအခါ, အသုံးပြုသောဒေတာဘေ့စ်အကောင့်သည်ပစ်မှတ်သိုလှောင်ထားသည့်လုပ်ထုံးလုပ်နည်းအတိုင်းအနည်းဆုံးခွင့်ပြုချက်ရရန်သင်သေချာသင့်သည်။ ဥပမာအားဖြင့်:
GRANT EXECUTE ON PROCEDURE getUserData TO 'app_user'@'gitbox.net';
လာမယ့်ရလဒ်ကိုသုံးရန် () ရလဒ်များကိုလုပ်ဆောင်ရန်အတွက်၎င်းသည်အဆင်ပြေစေရန်အဆင်ပြေအောင်အပြင်ဘက်တွင်အလားအလာရှိသောစွမ်းဆောင်ရည်ပြ problems နာများနှင့်လုံခြုံရေးအန္တရာယ်များရှိသည်။ လုံခြုံရေးမော်ဒယ်နှင့်ပေါင်းစပ်။
Preprocessing ထုတ်ပြန်ချက်များကိုသုံးပါ။
ရလဒ်အစုံအရေအတွက်ကိုထိန်းချုပ်;
ခြွင်းချက်နှင့်အချိန်ကုန်ခြင်းပြုပြင်ခြင်းများကိုထည့်ပါ။
နိမ့်ဆုံးခွင့်ပြုချက်အရသင်၏အကောင့်ကိုသင်ပြင်ဆင်ပါ။
ဤအချက်သည်သင်၏လျှောက်လွှာသည်မြင့်မားသောတစ်ပြိုင်နက်တည်းနှင့်လုံခြုံရေးလိုအပ်ချက်များစွာဖြင့်တည်ငြိမ်စွာလုပ်ကိုင်နေမည်ဖြစ်ကြောင်းသေချာစေလိမ့်မည်။