MySQL အခြေပြု PHP applications များကိုတီထွင်သည့်အခါ MySQLI extension ကိုများသောအားဖြင့်ဒေတာဘေ့စ်နှင့်ဆက်သွယ်ရန်အသုံးပြုလေ့ရှိသည်။ MySQLI သည် အသုံး 0 င်သော features များစွာကိုထောက်ပံ့သော်လည်းအလားအလာရှိသောအမှားများနှင့်ခြွင်းချက်အချို့ရှိနိုင်သည်။
ဤဆောင်းပါးသည် MySQLI_STMT ကိုမည်သို့ဖမ်းယူရမည်ကိုအာရုံစိုက်မည်ကိုအာရုံစူးစိုက်ပါလိမ့်မည်။
MySQLI_STMT :: $ အမှား သည် MySQLI_STMT အတန်းထဲတွင်အိမ်ခြံမြေအကျိုးတစ်ခုဖြစ်သည်။ MySQLI_STMT အတန်း၏နည်းလမ်းကို SQL query ကို execute လုပ် သည့်အခါအမှားတစ်ခုဖြစ်ပါက အမှား တစ်ခုဖြစ်ပါကအမှားအယွင်းအချက်အလက်ကိုဖြည့်ဆည်းပေးနိုင်လိမ့်မည်။ ဤပစ္စည်းကိုစစ်ဆေးခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်တိကျသောအမှားအကြောင်းအရာများကိုကျွန်ုပ်တို့နားလည်ပြီးနောက်ထပ် debugging ပြုလုပ်နိုင်သည်။
ဒေတာဘေ့စ်လုပ်ငန်းများကိုကျွန်ုပ်တို့လုပ်ဆောင်သောအခါအမှားမက်ဆေ့ခ်ျကိုမသိမ်းမိပါကကျွန်ုပ်တို့သည်အလားအလာရှိသောဒေတာဘေ့စ်ပြ problems နာများကိုလွဲချော်နိုင်သည်။ အထူးသဖြင့် SQL query ပျက်ကွက်ခြင်း (သို့) ဒေတာခြွင်းချက်များအရလျှောက်လွှာသည်ဆက်လက်လည်ပတ်နေနိုင်သည်။ ထို့ကြောင့်အမှားသတင်းအချက်အလက်များကိုအချိန်မှန်ဖြင့်ဖမ်းယူခြင်းနှင့်ပြုပြင်ခြင်းသည်ကျွန်ုပ်တို့ကိုကူညီနိုင်သည်။
အချိန်မီ SQL အမှားများကိုရှာဖွေပါ။
developer များပြ problems နာများကိုရှာဖွေရန်ကူညီရန်အချက်အလက်များကိုရှင်းလင်းစွာ debugging လုပ်ပါ။
ဒေတာဘေ့စ်လုပ်ငန်းများကို optimize လုပ်ပါ။ လျှောက်လွှာတည်ငြိမ်မှုနှင့်စွမ်းဆောင်ရည်ကိုတိုးတက်အောင်လုပ်ပါ။
PHP တွင် MySQLI_STMT :: $ error attribute မှတစ်ဆင့် SQL အမှားမက်ဆေ့ခ်ျများကိုဖမ်းယူနိုင်သည်။ အမှားအယွင်းများကိုဖမ်းရန်နှင့်ကိုင်တွယ်ရန် MySQLI extension မှ preprocessing ထုတ်ပြန်ချက်များကိုမည်သို့အသုံးပြုရမည်ကိုပြသသည့်အခြေခံဥပမာတစ်ခုဖြစ်သည်။
<?php
// ဒေတာဘေ့စ်ဆက်သွယ်မှုသတင်းအချက်အလက်
$host = 'localhost';
$username = 'root';
$password = 'password';
$database = 'test_db';
// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
$mysqli = new mysqli($host, $username, $password, $database);
// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
// ကြိုတင်ကြေငြာချက်တစ်ခုဖန်တီးပါ
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if ($stmt === false) {
die("ကြေညာချက်ကိုပြင်ဆင်ရန်ပျက်ကွက်: " . $mysqli->error);
}
// parameters တွေကိုချည်နှောင်ခြင်းနှင့်ထုတ်ပြန်ချက်များ execute
$id = 1;
$stmt->bind_param("i", $id);
if (!$stmt->execute()) {
// အမှားများကိုဖမ်းနှင့်ကိုင်တွယ်
echo "တစ် ဦး query ကိုကွပ်မျက်စဉ်အမှားတစ်ခုဖြစ်ပွားခဲ့သည်: " . $stmt->error;
} else {
// အပြောင်းအလဲများရလဒ်များ
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo "အသုံးပြုသူID: " . $row['id'] . ", အသုံးပြုသူ名: " . $row['username'] . "<br>";
}
}
// အနီးကပ်ထုတ်ပြန်ချက်များနှင့်ဆက်သွယ်မှု
$stmt->close();
$mysqli->close();
?>
ဒေတာဘေ့စ်ဆက်သွယ်မှု - MySQLI extension ကို အသုံးပြု. ဒေတာဘေ့စ်ချိတ်ဆက်မှုကို ဦး စွာဖန်တီးပြီး Connection သည် MySQLI-Getect_Error မှတဆင့်အောင်မြင်သည်ကိုစစ်ဆေးပါ။
SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်ပါ - $ MySQLI-> ပြင်ဆင်ခြင်း () ကို သုံး. ကြိုတင်အသုံးချသည့်ကြေညာချက်ကိုဖန်တီးပါ။ အကယ်. ဖန်တီးမှုမအောင်မြင်ပါကကျွန်ုပ်တို့သည်အမှားအယွင်းကိုတိုက်ရိုက်ထုတ်ပေးသည်။
Execute SQL Query : Execute လုပ်ခြင်း () အမှားတစ်ခုဖြစ်သည့်ကြေညာချက်ကို Execute လုပ်သည့်အခါအမှားတစ်ခုဖြစ်ပါကအမှားတစ်ခုဖြစ်ပါကအမှားကို MySQLI_STMT :: အမှားအယွင်းများ နှင့် output အသေးစိတ်အချက်အလက်များ။ ဒီလိုမှမဟုတ်ရင် query ရလဒ်များကိုဆက်လက်လုပ်ဆောင်ပါ။
Connection ကိုပိတ်ပါ ။ ဒေတာဘေ့စ်လည်ပတ်မှုကိုအကောင်အထည်ဖော်ပြီးနောက်အရင်းအမြစ်ယိုစိမ့်မှုကိုရှောင်ရှားရန်ကြေငြာချက်နှင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုပိတ်ရန်သတိရပါ။
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်အမှားအယွင်းများကိုကောက်ယူခြင်းနှင့်ရလဒ်များအရပယ်ဖျက်ခြင်းသည် debugging လိုအပ်ချက်များနှင့်တွေ့ဆုံရန်မလုံလောက်ပါ။ ဒေတာဘေ့စ်လုပ်ငန်းများကို debug လုပ်ရန်နှင့် outzug လုပ်ရန်ကျွန်ုပ်တို့သည် browser တွင်တိုက်ရိုက်ထုတ်လွှင့်မည့်အစားအမှားအယွင်းများကို log files များထဲသို့ log files များထဲသို့ဝင်ရောက်နိုင်သည်။
<?php
// မှတ်တမ်းဖိုင်လမ်းကြောင်းကိုသတ်မှတ်ပါ
define('LOG_FILE', '/var/log/php_errors.log');
// Custom Error ကိုကိုင်တွယ်ဖြေရှင်းခြင်း
function logError($error_message) {
// လက်ရှိ timestamp ရယူပါ
$timestamp = date('Y-m-d H:i:s');
// error အမှားအယွင်း
$log_message = "[$timestamp] - $error_message\n";
// ဖိုင်များကိုမှတ်တမ်းတင်ရန်ရေးပါ
file_put_contents(LOG_FILE, $log_message, FILE_APPEND);
}
// ဒေတာဘေ့စ်ဆက်သွယ်မှုနှင့်ကွပ်မျက်အပိုင်းပျက်ကွက်...
// စုံစမ်းမှုတစ်ခုကွပ်မျက်သည့်အခါအမှားအယွင်းများကိုဖမ်းပါ
if (!$stmt->execute()) {
$error_message = "တစ် ဦး query ကိုကွပ်မျက်စဉ်အမှားတစ်ခုဖြစ်ပွားခဲ့သည်: " . $stmt->error;
// မှတ်တမ်းအမှားမှတ်တမ်း
logError($error_message);
// output condise အမှားမက်ဆေ့ခ်ျကို(အသေးစိတ်ဒေတာဘေ့စ်အမှားသတင်းအချက်အလက်များကိုထိတွေ့ခြင်းမရှိပါ)
echo "ဒေတာဘေ့စ်စစ်ဆင်ရေးမအောင်မြင်ပါ,ကျေးဇူးပြု. နောက်မှထပ်ကြိုးစားပါ。";
}
// ဆက်သွယ်မှုကိုပိတ်ပါ
$stmt->close();
$mysqli->close();
?>
log file : ကျွန်ုပ်တို့သည် log file သို့လမ်းကြောင်းတစ်ခုသိုလှောင်ရန်စဉ်ဆက်မပြတ် log_file ကို သတ်မှတ်သည်။ အမှန်တကယ်အသုံးပြုမှုတွင်ဆာဗာပတ် 0 န်းကျင်အရသင့်တော်သောလမ်းကြောင်းကိုရွေးချယ်နိုင်သည်။
Custom Error Erroring ကိုင်တွယ် function : LogError () function records မှတ်တမ်းများကိုမှတ်တမ်းဖိုင်သို့အမှားအယွင်းရှိသည်။ မှတ်တမ်းတစ်ခုစီသည်နောက်ပိုင်းတွင်ကြည့်ရှုခြင်းနှင့်ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်လက်ရှိ timestamp ပါ 0 င်မည်ဖြစ်သည်။
စုံစမ်းမှုကိုအကောင်အထည်ဖော်သည့်အခါအမှားများကိုဖွင့်သောအခါ အမှားများကိုဖွင့်သောအခါအမှားအယွင်းကိုမှတ်တမ်းတင်ပြီးလျှင်စာမျက်နှာပေါ်တွင်တိုက်ရိုက်ထုတ်ယူမည့်အစား အမှားအယွင်း ကိုမှတ်တမ်းတင်ပါ။
ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည် developer များ၏ post-debugging ကိုလွယ်ကူချောမွေ့စေစဉ်ထုတ်လုပ်မှုပတ် 0 န်းကျင်ရှိအမှားအယွင်းများကိုထိန်းသိမ်းထားနိုင်သည်။
PHP တွင် MySQLI_STMT :: $ အမှား attribute ကိုအသုံးပြုခြင်းနှင့်လုပ်ငန်းစဉ်အမှားအချက်အလက်များကိုဖမ်းယူခြင်းနှင့်လုပ်ငန်းစဉ်များကိုဖမ်းယူရန်နှင့်လုပ်ငန်းစဉ်များကိုကျွန်ုပ်တို့အားပိုမိုအချိန်မီရှာဖွေရန်နှင့်၎င်းတို့ကိုပြင်ဆင်ရန်ကူညီနိုင်သည်။ Erraming ကိုင်တွယ်နိုင်စွမ်းကိုမြှင့်တင်ရန်အတွက် applications များကို debugging နှင့် optimization များကိုလွယ်ကူချောမွေ့စေရန်အတွက်ဖွံ့ဖြိုးတိုးတက်မှုလုပ်ငန်းစဉ်အတွင်းအသေးစိတ်အမှားအချက်အလက်များကိုသိမ်းဆည်းရန်သစ်ထုတ်လုပ်ရေးစနစ်များကိုပေါင်းစပ်ရန် logging systems များကိုပေါင်းစပ်ရန်အကြံပြုသည်။
ထို့အပြင်ကျိုးကြောင်းဆီလျော်သောအမှားကိုင်တွယ်မှုသည်စနစ်၏တည်ငြိမ်မှုနှင့်အသုံးပြုသူအတွေ့အကြုံများကိုများစွာတိုးတက်စေနိုင်သည်။ PHP application များဖွံ့ဖြိုးဆဲနှင့်နေရာချထားသည့်အခါဒေတာဘေ့စ်စစ်ဆင်ရေးများကိုရိုက်ကူးခြင်းနှင့်ကိုင်တွယ်ခြင်းကိုအမှားပြုစုရန်အာရုံစိုက်ရန်အရေးကြီးသည်။