PHP Development တွင် Database Operations သည်အထူးသဖြင့် MySQL databases များကို အသုံးပြု. ကျွန်ုပ်တို့၏ဘုံလုပ်ငန်းများဖြစ်သည်။ ဒေတာဘေ့စ်မေးမြန်းချက်များကိုကျွန်ုပ်တို့လုပ်ဆောင်သောအခါအမှားများကိုကျွန်ုပ်တို့ကြုံတွေ့ရသည်။ အကယ်. ကျွန်ုပ်တို့သည်သူတို့ကိုအချိန်မီမပြုလုပ်ပါက၎င်းသည်ပရိုဂရမ်ချွင်းချက်များသို့မဟုတ်ဒေတာဘေ့စ်လုပ်ငန်းများပျက်ကွက်ခြင်းများကိုဖြစ်ပေါ်စေနိုင်သည်။ develber များကို debuggugs and just များကိုပိုမိုထိရောက်စွာကိုင်တွယ်နိုင်ရန်အတွက် PHP ၏ MySQLI_STMM: MySQLI_PREPARE () function နှင့်ပေါင်းစပ်ထားသော $ error property သည်အလွန်အသုံး 0 င်သောကိရိယာများနှင့်ပေါင်းစပ်ထားသည်။
ဤဆောင်းပါးသည် MySQLI_STMT :: MySQLI_Prepare () ကို SQL Query များရှိအမှားအယွင်းများကိုမည်သို့အသုံးပြုရမည်,
MySQLI_PREPATE () SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်ရန် PHP တွင်လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ၎င်းသည် SQL ထုတ်ပြန်ချက်များကို MySQL server သို့ကူးပြောင်းနိုင်ပြီးမေးမြန်းမှုအတွက်ပြင်ဆင်ထားသည့်ကြေညာချက်အရာဝတ်ထုတစ်ခုကိုဖန်တီးနိုင်သည်။ MySQLI_STMT အတန်းထဲတွင် $ error attribute မှတစ်ဆင့် SQL ကွပ်မျက်စဉ်အတွင်းအမှားသတင်းအချက်အလက်များကိုရယူနိုင်ပါသည်။
MySQLI_PREPATE () function ကို compille များစုဆောင်းပြီး incoming sql query query statement ကို MySQL server သို့ပို့သည်။ သို့သော်စုံစမ်းမှုကိုချက်ချင်းကွပ်မျက်လိမ့်မည်မဟုတ်ပါ။ ၎င်းသည် query ကိုကွပ်မျက်ခံရနိုင်ပြီး parameters တွေကိုကန့်သတ်နိုင်သည့် MySQLI_STMT အရာဝတ်ထုတစ်ခုကိုပြန်ပို့လိမ့်မည်။ ဤလုပ်ဆောင်ချက်သည် SQL Injection ကိုကာကွယ်ရန်နှင့်သင်၏ကုဒ်၏ဖတ်ရလွယ်ကူမှုနှင့်လုံခြုံမှုကိုတိုးတက်စေသည်။
$connection = new mysqli("localhost", "username", "password", "database");
if ($connection->connect_error) {
die("Connection failed: " . $connection->connect_error);
}
// ပြင်ဆင်ထားSQLအသေအချာပေြာဆိုချက်
$stmt = $connection->prepare("SELECT * FROM users WHERE id = ?");
MySQLI_STMMT သည် SQL ထုတ်ပြန်ချက်များကိုလုပ်ဆောင်သည့်အခါအမှားအယွင်းများကိုရရှိရန် $ erral attribute ကိုအသုံးပြုသည်။ အကယ်. စုံစမ်းမှုသည်အောင်မြင်မှုရှိပါက $ အမှား သည်အချည်းနှီးသော string တစ်ခုဖြစ်ပြီး, အကယ်. မေးမြန်းမှုမအောင်မြင်ပါကဤပိုင်ဆိုင်မှုသည်တိကျသောအမှားအယွင်းတစ်ခုသို့ပြန်ပို့ပေးလိမ့်မည်။
if ($stmt === false) {
echo "Failed to prepare statement: " . $connection->error;
} else {
// တစ် ဦး စုံစမ်းမှု execute
$stmt->execute();
// အမှားများကိုစစ်ဆေးပါ
if ($stmt->error) {
echo "Query error: " . $stmt->error;
} else {
echo "Query executed successfully!";
}
}
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဒေတာဘေ့စ်လုပ်ငန်းများ, ဆက်သွယ်မှုပြ problems နာများ, ခွင့်ပြုချက်ပြ problems နာများစသဖြင့် SQL အမှားများ, ခွင့်ပြုချက်ပြ problems နာများစသည်တို့ကိုကြုံတွေ့ရနိုင်သည် ။ ဥပမာအားဖြင့်:
$query = "SELECT * FROM users WHERE id = ?";
$stmt = $connection->prepare($query);
if ($stmt === false) {
// 如果ပြင်ဆင်ထားအသေအချာပေြာဆိုချက်失败,output error message
echo "Error preparing statement: " . $connection->error;
} else {
// parameters တွေကိုချည်ထား
$stmt->bind_param("i", $userId);
$stmt->execute();
if ($stmt->error) {
// 如果တစ် ဦး စုံစမ်းမှု execute失败,output ကိုအသေးစိတ်အမှား
echo "Query execution failed: " . $stmt->error;
} else {
// အောင်မြင်သောစုံစမ်းမှု
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo "User: " . $row['name'];
}
}
}
ဤနည်းလမ်းသည် SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်ခြင်းသို့မဟုတ်ကွပ်မျက်ခံရသည့်အခါအမှားအယွင်းများကိုချက်ချင်းရိုက်ကူးနိုင်ကြောင်းသေချာစေသည်။
Debugging လုပ်သည့်အခါ MySQLI_STMT ၏ပါဝင်သည့်အကြောင်းအရာများကိုစစ်ဆေးသောအခါ :: $ အမှားသည် ရှာဖွေမှုတွင်အမှားအယွင်းများ၏အကြောင်းရင်းကိုလျင်မြန်စွာရှာဖွေရန်ကူညီနိုင်သည်။ ဥပမာအားဖြင့်, syntax မှားယွင်းနေလျှင်သို့မဟုတ်စားပွဲတင်အမည်မှားယွင်းလျှင်, အမှားအယွင်းများကိုသင်ရှာဖွေရန်ကူညီရန်အတွက်အမှားအချက်အလက်များပါ 0 င ် မည်။
ဥပမာအားဖြင့်:
$stmt = $connection->prepare("SELECT * FROM non_existent_table WHERE id = ?");
if ($stmt === false) {
echo "Prepare failed: " . $connection->error;
} else {
$stmt->execute();
if ($stmt->error) {
echo "Execution failed: " . $stmt->error;
}
}
ဤကိစ္စတွင် ဒေါ်လာ stmt-> အမှားသည် "table" daton_existent_table 'daton_existent_table' 'မတည်ရှိပါ "ဟူသောအမှားအယွင်းတစ်ခုသို့ပြန်ပို့နိုင်သည်။
MySQLI_STMT :: MySQLI_Prepare () MySqli_prepare () , အမှားတစ်ခုဖြစ်ပေါ်သည့်အခါမှတ်တမ်းများကိုသင်မှတ်တမ်းတင်နိုင်သည်။ ဥပမာအားဖြင့်:
function logError($errorMsg) {
file_put_contents('error_log.txt', $errorMsg . "\n", FILE_APPEND);
}
$query = "SELECT * FROM users WHERE id = ?";
$stmt = $connection->prepare($query);
if ($stmt === false) {
logError("Error preparing statement: " . $connection->error);
} else {
$stmt->execute();
if ($stmt->error) {
logError("Error executing query: " . $stmt->error);
}
}
ဤနည်းလမ်းသည်သင့်အားအချိန်နှင့်တပြေးညီပြ problems နာများကိုရှာဖွေတွေ့ရှိရန်သာမကနောက်ပိုင်းတွင်အသေးစိတ်ခွဲခြမ်းစိတ်ဖြာခြင်းအတွက်အချက်အလက်များကိုလည်းမှတ်တမ်းတင်ထားသည်။
MySQLI_STMT :: MySQLI_PREPATE () သည်ဒေတာဘေ့စ်စုံစမ်းမှုအမှားများကိုဖြေရှင်းရန်အတွက်သင်၏စွမ်းဆောင်ရည်ကိုထိထိရောက်ရောက်တိုးတက်အောင်ပြုလုပ်နိုင်သည်။ SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်ခြင်းအားဖြင့် Query များကိုစစ်ဆေးခြင်းနှင့်အသေးစိတ်အမှားအယွင်းများကိုမှတ်တမ်းတင်ခြင်းနှင့်အသေးစိတ်အချက်အလက်များကိုမှတ်တမ်းတင်ခြင်းအားဖြင့်ပြ problems နာများကိုပိုမိုတိကျစွာရှာဖွေတွေ့ရှိနိုင်ပြီးအလားအလာရှိသောအမှားများကိုအလျင်အမြန်ဖြေရှင်းနိုင်ရန်နှင့်အစီအစဉ်အစဉ်အလာကိုလျင်မြန်စွာပြင်ဆင်နိုင်သည်။
ကျိုးကြောင်းဆီလျော်သောအမှားများကိုကိုင်တွယ်ခြင်းနှင့် debugging မဟာဗျူဟာများကို ဖြတ်. ဖွံ့ဖြိုးတိုးတက်မှုဆိုင်ရာစွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်အောင်လုပ်နိုင်ရုံသာမကလျှောက်လွှာတည်ငြိမ်မှုနှင့်သုံးစွဲသူအတွေ့အကြုံများကိုလည်းတိုးတက်စေနိုင်သည်။
ဤဆောင်းပါးသည်သင့်အားပိုမိုကောင်းမွန်သော debugge နှင့် Database Query အမှားများကိုကူညီနိုင်လိမ့်မည်ဟုမျှော်လင့်ပါသည်။ သင့်တွင်မေးခွန်းများရှိပါကသို့မဟုတ်နောက်ထပ်ရှင်းပြချက်လိုအပ်ပါက ကျေးဇူးပြု. ဆွေးနွေးရန်သတင်းပို့ပါ။