MySQLI ကိုဒေတာဘေ့စ်လုပ်ငန်းများအတွက်အသုံးပြုသောအခါ MySQLI_STMT အတန်းထဲတွင် အမှား attribute သည်အလွန်အရေးကြီးသောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည်စုံစမ်းမှုတစ်ခုပြုလုပ်ရာတွင်အမှားအယွင်းများရရန်အသုံးပြုသည်။ သို့သော် developer များစွာသည်ဤပစ္စည်းဥစ်စာပိုင်ဆိုင်မှုကိုကိုင်တွယ်ဖြေရှင်းသည့်အခါအသေးစိတ်အချက်အလက်များကိုလျစ်လျူရှုပေမည်။
MySQLI_STMT အတန်းကိုသင် အသုံးပြုသော အခါ, MySQLI_STMT :: $ အမှား မှတစ်ဆင့်အသေးစိတ်အမှားဖော်ပြချက်ကိုသင်ရနိုင်သည်။
<?php
// ဒေတာဘေ့စ် connection တစ်ခုဖန်တီးပါ
$mysqli = new mysqli("localhost", "username", "password", "database_name");
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
// စုံစမ်းရေးကော်မရှင်အတွက်ပြင်ဆင်ပါ
$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if ($stmt === false) {
echo "စုံစမ်းရေးကော်မရှင်အတွက်ပြင်ဆင်ပါ失败: " . $mysqli->error;
exit();
}
// parameters တွေကိုခညျြနှောငျခြင်းနှင့် quent ကို execute
$id = 1;
$stmt->bind_param("i", $id);
$stmt->execute();
// အမှားမက်ဆေ့ခ်ျကိုရယူပါ
if ($stmt->error) {
echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $stmt->error;
}
$stmt->close();
$mysqli->close();
?>
MySQLI_STMT :: $ အမှားသည် အသေးစိတ်အမှားအချက်အလက်များကိုပြန်ပို့သော်လည်း encoding နှင့်ပြ problems နာများရှိနိုင်သည်။ အချို့ဖြစ်ရပ်များတွင်အမှားအယွင်းရှိဇာတ်ကောင်များသည်ကျောက်တုံးများပေါ်ပေါက်လာနိုင်သည်။
Encoding ပြ issues နာများကိုအမှားအယွင်းများအတွက်မှန်ကန်စွာကိုင်တွယ်ရန် MySQL ဆက်သွယ်မှုနှင့်မေးမြန်းမှုစစ်ဆင်ရေးများသည်တသမတ်တည်းဇာတ်ကောင်ကိုသုံးရန်သေချာစေသင့်သည်။ များသောအားဖြင့်ကျွန်ုပ်တို့သည်၎င်းကိုအောက်ပါနည်းလမ်းများဖြင့်ပြုပြင်နိုင်သည်။
MySQL နှင့်ချိတ်ဆက်သောအခါဇာတ်ကောင် set ကိုသတ်မှတ်ပါ -
$mysqli->set_charset("utf8mb4");
ဤအချက်သည်ဒေတာဘေ့စ်နှင့်ဆက်သွယ်မှုသည် UTF8MB4 ဇာတ်ကောင်အစုံကိုအသုံးပြုသည်။
စုံစမ်းမှုကိုမလုပ်ဆောင်မီစုံစမ်းမှုဇာတ်ကောင် set ကိုသတ်မှတ်ပါ။
$mysqli->query("SET NAMES 'utf8mb4'");
ဤသို့ပြုလုပ်ခြင်းသည်နောက်ဆက်တွဲမေးမြန်းချက်အားလုံးသည်မှန်ကန်သောဇာတ်ကောင်အစုံကိုအသုံးပြုထားကြောင်း,
MySQLI_STMT မှအမှားအယွင်းများကိုသင်တွေ့ရှိပါက :: $ အမှား တွင် carbled code များပါ 0 င်သည်။ ဒီမှာ barbled code ကိုကိုင်တွယ်ပုံဥပမာတစ်ခု။
<?php
// အမှားမက်ဆေ့ခ်ျကိုရယူပါ
$error_message = $stmt->error;
// အမှားမက်ဆေ့ခ်ျကိုပြောင်းပါ UTF-8 ကုဒ်
$error_message_utf8 = mb_convert_encoding($error_message, 'UTF-8', 'auto');
// output error message
echo "စုံစမ်းမှုမအောင်မြင်ပါ: " . $error_message_utf8;
?>
MySQLI_STMT :: $ အမှားအယွင်းများ နှင့်ဆက်ဆံရာတွင် encoding ပြ problems နာများကိုမကြာခဏလျစ်လျူရှုထားလေ့ရှိပြီးအမှားအယွင်းများကိုမှားယွင်းစွာဖော်ပြခဲ့သည်။ ဤပြ problem နာကိုရှောင်ရှားရန်ဒေတာဘေ့စ်ဆက်သွယ်မှုများနှင့်မေးမြန်းချက်နှစ်ခုလုံးသည်လိုအပ်သည့်အခါစည်းလုံးညီညွတ်သောဇာတ်ကောင်များကို အသုံးပြု. encode enecode encode များကိုအသုံးပြုရန်သေချာစေပါ။ ဤနည်းအားဖြင့် MySQL အမှားအယွင်းများကိုမှန်ကန်စွာရယူနိုင်ရန်နှင့်လျှောက်လွှာကြံ့ခိုင်ခြင်းနှင့်အသုံးပြုသူအတွေ့အကြုံကိုတိုးတက်အောင်လုပ်နိုင်သည်။