လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI_STMT :: $ အမှားမှတစ်ဆင့် SQL ကြေငြာချက်၏အမှားအယွင်းများကိုမည်သို့ရနိုင်မည်နည်း

MySQLI_STMT :: $ အမှားမှတစ်ဆင့် SQL ကြေငြာချက်၏အမှားအယွင်းများကိုမည်သို့ရနိုင်မည်နည်း

gitbox 2025-05-28

PHP တွင် MySQLI သည်အသုံးများသော database extension ဖြစ်သည်။ ၎င်းသည်ဒေတာဘေ့စ်နှင့်အပြန်အလှန်ဆက်သွယ်ရန်နည်းလမ်းများစွာကိုထောက်ပံ့ပေးသည်။ MySQLI_STMT အတန်းသည် MySQLI extension ၏အစိတ်အပိုင်းဖြစ်သည်။ ၎င်းသည် Preprocessing ထုတ်ပြန်ချက်များကိုလုပ်ဆောင်ရန်အသုံးပြုသော MySQLI တိုးချဲ့မှု၏အစိတ်အပိုင်းဖြစ်သည်။ အသုံးများသောလိုအပ်ချက်မှာ developer များ Debug နှင့်ပြ problems နာများကိုဖြေရှင်းရန် SQL Queries များကိုကွပ်မျက်ခံရသောအခါအမှားမက်ဆေ့ခ်ျများကိုဖမ်းယူရန်နှင့်ပြသရန်ဖြစ်သည်။ MySQLI_STMM :: $ အမှား မှတစ်ဆင့် SQL ထုတ်ပြန်ချက်များကိုကွပ်မျက်သည့်အခါအသေးစိတ်အချက်အလက်များကိုမည်သို့ရယူရမည်ကိုဤဆောင်းပါးကဤဆောင်းပါးသည်မိတ်ဆက်ပေးလိမ့်မည်။

1 ။ MySQLI_STMT :: အမှားအချက်အလက်များရရန် $ အမှားကို သုံးပါ

Preprocessing ထုတ်ပြန်ချက်များ ကို အသုံးပြုသောအခါ, MySQLI_STMT :: $ အမှား variable ကို query ကိုကွပ်မျက်သည့်အခါအမှားသတင်းအချက်အလက်များကိုကယ်တင်သည်။ အကယ်. SQL Execution သည်အောင်မြင်လျှင်တန်ဖိုးသည်အချည်းနှီးသော string တစ်ခုဖြစ်သည်။ အကယ်. SQL Execution ပျက်ကွက်ပါကအမှားအယွင်းတစ်ခုသို့ပြန်ပို့သည်။

နမူနာကုဒ်

အောက်ပါဥပမာသည် MySQLI_STMTT ကိုမည်သို့အသုံးပြုရမည်ကိုပြသသည့်ရိုးရှင်းသောဥပမာတစ်ခုမှာ SQL Query များကိုကွပ်မျက်သည့်အခါအမှားအချက်အလက်များရရန် $ အမှားအယွင်းများ

 <?php
// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($mysqli->connect_error) {
    die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}

// ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်
$sql = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($sql);

// 检查အသေအချာပေြာဆိုချက်是否ပြင်ဆင်ထား成功
if ($stmt === false) {
    die("ပြင်ဆင်ထားအသေအချာပေြာဆိုချက်失败: " . $mysqli->error);
}

// parameters တွေကိုချည်ထား
$id = 1;
$stmt->bind_param("i", $id);

// တစ် ဦး စုံစမ်းမှု execute
if (!$stmt->execute()) {
    echo "ကရိယာတန်းဆာ SQL အသေအချာပေြာဆိုချက်时出错: " . $stmt->error;
} else {
    echo "အောင်မြင်သောစုံစမ်းမှု!";
}

// 关闭အသေအချာပေြာဆိုချက်和连接
$stmt->close();
$mysqli->close();
?>

ကုဒ်ဖော်ပြချက်

  • Code တွင် $ stmt-> အမှားသည် SQL query ကိုအကောင်အထည်ဖော်သောအခါအမှားအချက်အလက်များကိုဖမ်းယူရန်အသုံးပြုသည်။

  • အကယ်. စုံစမ်းမှုကွပ်မျက်မှုမအောင်မြင်ပါက ဒေါ်လာ stmt-> အမှားတစ်ခုတွင် developer များပြ the နာကိုနေရာချရန်ကူညီနိုင်သည့်သီးခြားအမှားအယွင်းတစ်ခုပါ 0 င်မည်။

  • အကယ်. စုံစမ်းမှုကိုအောင်မြင်စွာကွပ်မျက်ခံရလျှင် ဒေါ်လာ stmt-> အမှားသည် အချည်းနှီးသော string ကိုပြန်ပေးလိမ့်မည်။

2 ။ စုံစမ်းမှုကွပ်မျက်မှုမအောင်မြင်သည့်အခါအသေးစိတ်အမှားအချက်အလက်များကိုဖမ်းယူပါ

$ stmt-> အမှား မှတဆင့်အမှားသတင်းအချက်အလက်ကိုရယူပြီးနောက်ကွဲပြားခြားနားသောအမှားသတင်းအချက်အလက်အပေါ် အခြေခံ. ကွဲပြားခြားနားသော debugging အစီအမံယူနိုင်ပါတယ်။ အသုံးများသောအမှားများတွင် SQL syntax အမှားများ, စားပွဲတင်သို့မဟုတ်လယ်ကွင်းအမည်စာလုံးပေါင်းအမှားများသို့မဟုတ် parameter သည်အမှားများပါ 0 င်နိုင်သည်။

ဥပမာ - SQL Error Messages နှင့်မှတ်တမ်းများမှတ်တမ်းများကိုရိုက်ကူးပါ

ပရိုဂရမ်တွင်အမှားသတင်းအချက်အလက်များကိုဖော်ထုတ်ခြင်းမှရှောင်ရှားနိုင်ရန်အတွက် developer များသည်များသောအားဖြင့်၎င်းကိုစာမျက်နှာပေါ်တွင်တိုက်ရိုက်ပြသမည့်အစားသတင်းအချက်အလက်များကိုမှတ်တမ်းဖိုင်များထဲသို့ဝင်ရောက်ကြသည်။

 <?php
// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// ဆက်သွယ်မှုအောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
if ($mysqli->connect_error) {
    die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}

// ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်
$sql = "SELECT * FROM users WHERE id = ?";
$stmt = $mysqli->prepare($sql);

// 检查အသေအချာပေြာဆိုချက်是否ပြင်ဆင်ထား成功
if ($stmt === false) {
    // မှတ်တမ်းအမှားမှတ်တမ်း
    error_log("ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်失败: " . $mysqli->error, 3, "/path/to/error_log.txt");
    die("ပြင်ဆင်ထားအသေအချာပေြာဆိုချက်失败");
}

// parameters တွေကိုချည်ထား
$id = 1;
$stmt->bind_param("i", $id);

// တစ် ဦး စုံစမ်းမှု execute
if (!$stmt->execute()) {
    // မှတ်တမ်းအမှားမှတ်တမ်း
    error_log("ကရိယာတန်းဆာ SQL အသေအချာပေြာဆိုချက်时出错: " . $stmt->error, 3, "/path/to/error_log.txt");
    echo "စုံစမ်းမှုမအောင်မြင်ပါ,ကျေးဇူးပြု. မှတ်တမ်းဖိုင်ကိုစစ်ဆေးပါ。";
} else {
    echo "အောင်မြင်သောစုံစမ်းမှု!";
}

// 关闭အသေအချာပေြာဆိုချက်和连接
$stmt->close();
$mysqli->close();
?>

ကုဒ်ဖော်ပြချက်

  • စုံစမ်းမှုကွပ်မျက်ခံရသောအခါအမှားအယွင်း () function ကို error_log () function သည် log file သို့အမှားအယွင်းကိုရေးသားခဲ့သည်။ ၎င်းသည်နောက်ဆုံးအသုံးပြုသူအားအသေးစိတ်အမှားအချက်အလက်များကိုဖော်ထုတ်ခြင်းနှင့်လျှောက်လွှာလုံခြုံရေးကိုတိုးတက်စေသည်။

  • ချို့ယွင်းချက်မှတ်တမ်းဖိုင်များကိုလုံခြုံသောနေရာ၌ထားရှိပြီး developer များသို့မဟုတ်အုပ်ချုပ်ရေးမှူးများမှသာလက်လှမ်းမီနိုင်သည်။

3 ။ အကျဉ်းချုပ်

MySQLI_STMT :: $ အမှား မှတစ်ဆင့် SQL ၏မေးမြန်းမှုကိုပြုလုပ်ရာတွင်ပြ problems နာများကိုအလျင်အမြန်ဖြည့်ဆည်းရန်နှင့်ဖြေရှင်းရန်ကူညီသည့်အခါအသေးစိတ်အချက်အလက်များကိုအလွယ်တကူရယူနိုင်သည်။ Developer များကအမှားမက်ဆေ့ခ်ျကိုတိုက်ရိုက်ပြသရန်သို့မဟုတ်အမှန်တကယ်လိုအပ်ချက်များအပေါ် အခြေခံ. မှတ်တမ်းဖိုင်တွင်မှတ်တမ်းတင်ရန်ဆုံးဖြတ်နိုင်သည်။ MySQLI extension ကိုအသုံးပြုသောအခါအမှားအချက်အလက်များကိုဖမ်းယူခြင်းသည်အလွန်အရေးကြီးသောလည်ပတ်မှုတစ်ခုဖြစ်ပြီးလျှောက်လွှာ၏ကြံ့ခိုင်မှုနှင့်လုံခြုံမှုကိုထိရောက်စွာတိုးတက်စေနိုင်သည်။