PHP ကို အသုံးပြု. MySQL databases နှင့်အပြန်အလှန်ဆက်သွယ်သောအခါ SQL Query များကိုမကြာခဏပြုလုပ်ရန်လိုအပ်သည်။ အကယ်. မေးမြန်းမှုမအောင်မြင်ပါကအမှားအယွင်းကိုင်တွယ်သည့်ယန္တရားသည်ပြ problem နာကိုရှာဖွေတွေ့ရှိရန်နှင့်၎င်းကိုကိုင်တွယ်ဖြေရှင်းရန်ကူညီနိုင်သည်။ MySQLI extension သည် MySQLI_STMT :: Mysqli_stmt :: store_result () နည်းလမ်းများအပါအ 0 င် SQL query :: store_result () နည်းလမ်းများအပါအ 0 င် developer များကိုဖမ်းရန်နှင့်ကိုင်တွယ်ရန်ကိရိယာများကိုကူညီရန်ကိရိယာများကိုထောက်ပံ့ပေးသည်။
ဤဆောင်းပါးသည် SQL query underures များကိုရှာဖွေရန်နှင့်သက်ဆိုင်ရာ PHP နမူနာကုဒ်ကိုရှာဖွေရန်နှင့်လုပ်ငန်းစဉ်ကိုရှာဖွေရန်ဤနည်းလမ်းနှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်ရှင်းပြပါလိမ့်မည်။
SQL Queryies :: MySQLI_STMT :: $ အမှားသည် လက်ရှိ SQL ကြေငြာချက်ကိုအကောင်အထည်ဖော်သည့်အခါအမှားအချက်အလက်များကိုရယူနိုင်သည့်အလွန်အသုံးဝင်သောပစ္စည်းတစ်ခုဖြစ်သည်။ ဤပစ္စည်းကိုစစ်ဆေးခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်မေးမြန်းမှုအောင်မြင်စွာကွပ်မျက်ခံရခြင်းရှိမရှိကိုကျွန်ုပ်တို့လျင်မြန်စွာဆုံးဖြတ်နိုင်သည်။
<?php
// ဒေတာဘေ့စ်ဆက်သွယ်မှု
$mysqli = new mysqli("localhost", "username", "password", "database");
// ဆက်သွယ်မှုကိုစစ်ဆေးပါ
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
// ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်
$query = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($query);
// စစ်ဆေးကြည့်ရှု SQL အသေအချာပေြာဆိုချက်是否ပြင်ဆင်ထား成功
if ($stmt === false) {
die("ပြင်ဆင်ထားအသေအချာပေြာဆိုချက်失败: " . $mysqli->error);
}
// parameters တွေကိုချည်ထား
$id = 1;
$stmt->bind_param("i", $id);
// တစ် ဦး စုံစမ်းမှု execute
if (!$stmt->execute()) {
// အသုံးပြု mysqli_stmt::$error အမှားမက်ဆေ့ခ်ျကိုရယူပါ
die("တစ် ဦး စုံစမ်းမှု execute失败: " . $stmt->error);
}
// ဆက်သွယ်မှုကိုပိတ်ပါ
$stmt->close();
$mysqli->close();
?>
ဤဥပမာတွင် SQL query သည် $ stmt-> အမှား မှတဆင့်ပျက်ကွက်သည့်အခါအသေးစိတ်အချက်အလက်များကိုကျွန်ုပ်တို့ရရှိပါသည်။ ဤနည်းအားဖြင့် developer များကရှာဖွေမှုပျက်ကွက်မှုအတွက်သတ်သတ်မှတ်မှတ်အကြောင်းပြချက်များနှင့် ထပ်မံ. debugging သို့မဟုတ်ပြုပြင်ခြင်းပြုလုပ်ရန်အကြောင်းပြချက်များကိုနားလည်နိုင်သည်။
MySQLI_STMT :: Store_Result () နည်းလမ်းကို MySQLI ကြေငြာချက်မှရရှိသောရလဒ်ကိုထုတ်ယူ။ သိုလှောင်ရန်အသုံးပြုသည်။ ရလဒ်ကိုရွေးချယ်ထားသောမေးမြန်းချက်များကိုကိုင်တွယ်ရန်အလွန်အသုံးဝင်သည်။ အကယ်. စုံစမ်းမှုသည်မည်သည့်အတန်းကိုမဆိုမပြန်ပါက (ဤသို့သောစုံစမ်းမှုအခြေအနေနှင့်မကိုက်ညီပါက) သည် မကိုက်ညီပါက,
<?php
// ဒေတာဘေ့စ်ဆက်သွယ်မှု
$mysqli = new mysqli("localhost", "username", "password", "database");
// ဆက်သွယ်မှုကိုစစ်ဆေးပါ
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
// ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်
$query = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($query);
// စစ်ဆေးကြည့်ရှု SQL အသေအချာပေြာဆိုချက်是否ပြင်ဆင်ထား成功
if ($stmt === false) {
die("ပြင်ဆင်ထားအသေအချာပေြာဆိုချက်失败: " . $mysqli->error);
}
// parameters တွေကိုချည်ထား
$id = 1;
$stmt->bind_param("i", $id);
// တစ် ဦး စုံစမ်းမှု execute
if (!$stmt->execute()) {
die("တစ် ဦး စုံစမ်းမှု execute失败: " . $stmt->error);
}
// Store ရလဒ်အစုံ
$stmt->store_result();
// စစ်ဆေးကြည့်ရှု结果集的行数
if ($stmt->num_rows === 0) {
echo "စံသတ်မှတ်ချက်များနှင့်ကိုက်ညီသောအသုံးပြုသူမရှိပါ。";
} else {
// ရလဒ် set ကိုအချည်းနှီးမဟုတ်ပါဘူး,ဒေတာအပြောင်းအလဲနဲ့လုပ်ဆောင်ပါ
echo "အောင်မြင်သောစုံစမ်းမှု,ရလဒ်များကိုအောက်ပါအတိုင်းဖြစ်ကြသည်:";
// အပြောင်းအလဲများရလဒ်များ
}
$stmt->close();
$mysqli->close();
?>
ဒီဥပမာမှာ Query ရဲ့ရလဒ်ကိုမှတ်ဉာဏ်ထဲသိုလှောင်ထားတဲ့အတွက် စတိုးဆိုင် _result () နည်းလမ်းကိုသုံးပြီးပြန်လာတဲ့ရလဒ်အတန်းကိုစစ်ဆေးဖို့ $ stmt-> numrows ကို သုံးပါ။ အကယ်. ဒေတာအတန်းများမပြန်ပါကဤ "ရလဒ်မရှိ" အခြေအနေကိုကျွန်ုပ်တို့ကိုင်တွယ်နိုင်သည်။
MySQLI_STMT :: MySQLI_STMMT :: MySQLI_STMT :: Store_result () သည်အမှားပြုပြင်ခြင်းအတွက်အမှားပြုပြင်ခြင်းအတွက်အမှားအယွင်းများကိုရယူခြင်းနှင့်ရလဒ်များအရအဆင့်အတန်းကိုစစ်ဆေးခြင်းအပြင်သစ်ခုတ်ခြင်းနှင့် debugging အချို့ကိုလည်းစစ်ဆေးနိုင်သည်။ ဤတွင်အချို့သောအသုံးအများဆုံးအမှားအယွင်းများကိုဤနေရာတွင်ဖော်ပြထားသည်။
Logging - ဒေတာဘေ့စ်မှအထိခိုက်မခံသောသတင်းအချက်အလက်များကိုရှောင်ရှားနိုင်သည့်အသုံးပြုသူအားတိုက်ရိုက်ပြမတင်မယ့်အစားအမှားအချက်အလက်များကိုမှတ်တမ်းဖိုင်ထဲသို့မှတ်တမ်းတင်ပါ။
အသုံးပြုသူအတွက်ဖော်ရွေသောအမှားအယွင်းများ - အဆုံးသုံးစွဲသူများအတွက်နောက်ခံဒေတာဘေ့စ်အမှားအယွင်းကိုဖော်ထုတ်ခြင်းကိုရှောင်ရှားရန်ဖော်ရွေသောချက်ချင်းသတင်းအချက်အလက်ကိုပေးပါ။
SQL query optimization : Query များမအောင်မြင်မီ SQL ထုတ်ပြန်ချက်များသည်တရားဝင်ဖြစ်ကြောင်းနှင့်ဘုံ SQL Intermention အားနည်းချက်များကိုရှောင်ရှားရန်သေချာစေပါ။
MySQLI_STMT :: MySQLI_STMTMT :: Store_Result () , SQL query qualure များကိုပိုမိုကောင်းမွန်စွာကိုင်တွယ်ဖြေရှင်းနိုင်သည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကောင်းမွန်သောအမှားကိုင်တွယ်သည့်ယန္တရားသည် code ၏ကြံ့ခိုင်မှုကိုတိုးတက်စေရုံသာမကထုတ်လုပ်မှုပတ် 0 န်းကျင်ရှိပြ problems နာများကိုလျင်မြန်စွာရှာဖွေရန်နှင့်ဖြေရှင်းနိုင်ရန်လည်းကူညီသည်။
ဤနည်းလမ်းနှစ်မျိုးပေါင်းစပ်မှုကိုအသုံးပြုခြင်းအားဖြင့်သင်သည်မေးမြန်းခြင်းပျက်ကွက်မှု၏အသေးစိတ်အချက်အလက်များကိုထိရောက်စွာဖမ်းယူနိုင်ပြီး developer များစုံစမ်းမှုမရှိတော့မိတာကိုကိုင်တွယ်ရန်အလျင်အမြန်တုံ့ပြန်ခွင့်ပြုနိုင်သည်။