Database Interaction သည် PHP စီမံကိန်းများ, အထူးသဖြင့်ကြီးမားသောစီမံကိန်းများဖွံ့ဖြိုးတိုးတက်လာသည့်အဓိကအစိတ်အပိုင်းဖြစ်သည်။ ထိုကဲ့သို့သောစီမံကိန်းများတွင်ဒေတာစစ်ဆင်ရေးများ၏လုံခြုံရေးနှင့်တည်ငြိမ်မှုကိုသေချာစေရန်အရေးပါသည်။ MySQLI extension သည် MySQL ဒေတာဘေ့စ်နှင့်အပြန်အလှန်ဆက်သွယ်မှုအတွက်လုပ်ဆောင်ချက်များကိုနှင့်နည်းလမ်းများကိုထောက်ပံ့ပေးသည်။ MySQLI_STMT :: $ အမှား လုပ်ဆောင်ချက်သည် SQL ထုတ်ပြန်ချက်များကိုကွပ်မျက်ရာတွင် developer များအမှားများကိုဖမ်းရန်ကူညီပေးသောအလွန်အသုံးဝင်သောကိရိယာတစ်ခုဖြစ်သည်။
ဤဆောင်းပါးတွင် MySQLI_STMT ကိုမည်သို့အသုံးပြုရမည်ကိုကျွန်ုပ်တို့ရှင်းပြပါမည်။ : အမှန်တကယ်ကိစ္စတွင်ခွဲခြမ်းစိတ်ဖြာခြင်းဖြင့်ကိုင်တွယ်ဖြေရှင်းခြင်းအတွက်အမှားအယွင်းများကို ထိရောက်စွာကိုင်တွယ်ဖြေရှင်းပြီး developer များကသူတို့၏ကုဒ်ကိုအားဖြည့်ခြင်းနှင့်ထိန်းသိမ်းခြင်းကိုတိုးတက်စေရန်အထောက်အကူပြုရန်အကောင်းဆုံးအတွေ့အကြုံအချို့ကိုမျှဝေပါ။
MySQLI_STMT :: $ error function သည် MySQLI_STMT အတန်းထဲတွင်အိမ်ခြံမြေပိုင်ဆိုင်မှုတစ်ခုဖြစ်သည်။ ပြင်ဆင်ခြင်း , bind_stptam သို့မဟုတ် execute လုပ်ခြင်း ကဲ့သို့သောလုပ်ဆောင်မှုများကိုပြုလုပ်သောအခါအမှားတစ်ခုဖြစ်ပေါ်ပါက MySQLI_STMT :: အမှားတစ်ခုသည် အမှားအယွင်းတစ်ခုသို့ပြန်ပေးလိမ့်မည်။ ၎င်းသည်ဒေတာဘေ့စ်အမှားများကိုဖမ်းရန်နှင့်ကိုင်တွယ်ရန်အလွန်အသုံးဝင်သည်။
<?php
// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
$mysqli = new mysqli("localhost", "user", "password", "database");
// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
// ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်
$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
// 检查ပြင်ဆင်ထားအသေအချာပေြာဆိုချက်是否成功
if ($stmt === false) {
echo "Error preparing statement: " . $mysqli->error;
exit();
}
// parameters တွေကိုချည်ထား
$email = "[email protected]";
$stmt->bind_param("s", $email);
// 执行အသေအချာပေြာဆိုချက်
$stmt->execute();
// ကွပ်မျက်အောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($stmt->error) {
echo "Execution error: " . $stmt->error;
} else {
echo "Execution successful!";
}
// 关闭အသေအချာပေြာဆိုချက်和连接
$stmt->close();
$mysqli->close();
?>
ဒီဥပမာမှာဒေတာဘေ့စ်နဲ့ဆက်သွယ်မှုကို ဦး စွာဖန်တီးပြီး SQL query string ကိုပြင်ဆင်ပါ။ ပြင်ဆင်မှုကြေငြာချက်ကိုအကောင်အထည်ဖော်သည့်အခါအမှားများကိုကျွန်ုပ်တို့စစ်ဆေးသည်။ MySQLI_STMT :: $ အမှားက အမှားအယွင်းများအရအမှားအယွင်းများအရအမှားအယွင်းများအရထပ်မံလုပ်ဆောင်ရန်ကူညီနိုင်သည်။
ကြီးမားသောစီမံကိန်းများတွင်ဒေတာဘေ့စ်စစ်ဆင်ရေးများသည်များသောအားဖြင့်စနစ်၏အဓိကအစိတ်အပိုင်းဖြစ်ပြီးမေးမြန်းမှုအမြောက်အများကိုရှာဖွေခြင်း, ထည့်သွင်းခြင်း, ထို့ကြောင့်အမှားကိုင်တွယ်ခြင်းသည် debugging tool တစ်ခုမျှသာမဟုတ်ပါ, ၎င်းသည်စနစ်၏တည်ငြိမ်မှုနှင့်အသုံးပြုသူအတွေ့အကြုံကိုတိုက်ရိုက်သက်ရောက်သည်။
စီမံကိန်းတွင်မူဒေတာဘေ့စ်အမှားအယွင်းများကိုအဆုံးအသုံးပြုသူသို့တိုက်ရိုက်ရှောင်ရှားရန်ရှောင်ရှားသင့်သည်။ developer များသည် log အပေါ် အခြေခံ. developer များရှာဖွေတွေ့ရှိနိုင်ရန်အမှားအယွင်းများကို log file ထဲသို့ဝင်ရောက်သင့်သည်။
<?php
// အမှားသစ်ထုတ်လုပ်ရေး function ကို
function log_error($message) {
// မှတ်တမ်းတင်ရန်အမှားအချက်အလက်များကိုရေးပါ
file_put_contents('error_log.txt', date('Y-m-d H:i:s') . " - " . $message . PHP_EOL, FILE_APPEND);
}
// ဒေတာဘေ့စ်ဆက်သွယ်မှု
$mysqli = new mysqli("localhost", "user", "password", "database");
// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($mysqli->connect_error) {
log_error("Connection failed: " . $mysqli->connect_error);
die("Database connection error.");
}
// SQL အသေအချာပေြာဆိုချက်ပြင်ဆင်ထား
$stmt = $mysqli->prepare("SELECT * FROM users WHERE email = ?");
// အသေအချာပေြာဆိုချက်ပြင်ဆင်ထား失败时,မှတ်တမ်းတင်ခြင်းအမှားများ
if ($stmt === false) {
log_error("Error preparing statement: " . $mysqli->error);
exit();
}
// parameters တွေကိုချည်ထား
$email = "[email protected]";
$stmt->bind_param("s", $email);
// 执行အသေအချာပေြာဆိုချက်并检查错误
$stmt->execute();
if ($stmt->error) {
log_error("Execution error: " . $stmt->error);
echo "An error occurred, please try again later.";
} else {
echo "Execution successful!";
}
// အရင်းအမြစ်ကိုပိတ်ပါ
$stmt->close();
$mysqli->close();
?>
ဤကုဒ်တွင်ကျွန်ုပ်တို့သည်သစ်ထုတ်လုပ်ရေးလုပ်ဆောင်နိုင်စွမ်းကိုမှားယွင်းစွာရိုက်ကူးရန်ထည့်ပါ။ Error_log.txt ဖိုင်ကို error_log.txt ဖိုင်ကိုရေးထားလိမ့်မည်။ ၎င်းသည်အထိခိုက်မခံသောသတင်းအချက်အလက်များကိုယိုစိမ့်မှုမှရှောင်ရှားနိုင်ရုံသာမက developer များသည်လည်းပြ problems နာများကိုလျင်မြန်စွာရှာဖွေတွေ့ရှိရန်ကူညီနိုင်သည်။
အချို့သောအသွားအလာစနစ်များတွင်အမှားအယွင်းများစစ်ဆေးခြင်းသည်စနစ်စွမ်းဆောင်ရည်ကိုအကျိုးသက်ရောက်နိုင်သည်။ စွမ်းဆောင်ရည်တိုးတက်စေရန်အတွက်ကျွန်ုပ်တို့သည်အခြေအနေအပေါ် အခြေခံ. အမှားစစ်ဆေးမှုများကြိမ်နှုန်းကိုလျှော့ချနိုင်သည်။ ဥပမာအားဖြင့်, SQL Queries အမျိုးမျိုးကိုအသုတ်တွင်လုပ်ဆောင်သောအခါ,
<?php
$queries = [
"SELECT * FROM users WHERE email = ?",
"SELECT * FROM products WHERE id = ?"
];
$mysqli = new mysqli("localhost", "user", "password", "database");
// ဆက်သွယ်မှုကိုစစ်ဆေးပါ
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
// အသားစားအတွက် query ကို execute
foreach ($queries as $query) {
$stmt = $mysqli->prepare($query);
if ($stmt === false) {
log_error("Error preparing statement: " . $mysqli->error);
continue; // စုံစမ်းမှုပျက်ကွက်လျှင်,အခြားမေးမြန်းချက်များကိုဆက်လက်လုပ်ဆောင်ရန် skip
}
// 执行其他parameters တွေကိုချည်ထား和查询的操作
$stmt->execute();
if ($stmt->error) {
log_error("Execution error: " . $stmt->error);
}
$stmt->close();
}
$mysqli->close();
?>
ကြီးမားသောစီမံကိန်းများတွင် MySQLI_STMTT :: အမှားအယွင်းများအတွက်အမှားအယွင်းများကို အသုံးပြု. အမှားကိုင်တွယ်ခြင်းအားဖြင့် Code ၏တည်ငြိမ်မှုကိုတိုးတက်စေရုံသာမက Runtime တွင်ပျက်ကျမှုအန္တရာယ်ကိုထိရောက်စွာလျှော့ချနိုင်သည်။ ဤတွင်အကောင်းဆုံးအလေ့အကျင့်အကြံပြုချက်များမှာ -
Logging : အသုံးပြုသူအားတိုက်ရိုက်ပြသမည့်အစား log file သို့အမှားအချက်အလက်များကိုမှတ်တမ်းတင်ပါ။
ဗဟိုအမှားကိုင်တွယ်မှု - အထူးသဖြင့် SQL Queries မျိုးစုံကိုအကောင်အထည်ဖော်သည့်အခါအမှားများကိုစစ်ဆေးရန်စင်တာများကိုစစ်ဆေးခြင်းဖြင့်စွမ်းဆောင်ရည် overhead ကိုလျှော့ချနိုင်သည်။
အလွန်အကျွံအမှားစစ်ဆေးခြင်းကိုရှောင်ပါ ။
ဤနည်းလမ်းများမှတစ်ဆင့် MySQLI_STMTT :: MySQLI_STMT :: $ အမှားအယွင်းများ ကိုပိုမိုထိရောက်စွာလုံခြုံစွာအသုံးပြုနိုင်ရန်သေချာစေနိုင်ပါသည်။