PHP ပရိုဂရမ်တွင် MySQLI extension ကို MySQL Database ကို 0 င်ရောက်ရန်အသုံးပြုသည်။ MySQLI_STMT :: $ အမှား သည် MySQLI extension တွင် SQL ထုတ်ပြန်ကြေငြာချက်တွင်ဖြစ်ပေါ်သောအမှားအချက်အလက်များကိုရရှိရန်အတွက်အလွန်အရေးကြီးသောလုပ်ဆောင်ချက်ဖြစ်သည်။ ဤဆောင်းပါးသည် MySQLI_STMT ကိုမည်သို့အသုံးပြုရမည်ကိုသရုပ်ပြရန်သင်ယူမှုကိစ္စကိုရေးရန်သင်ယူမှုကိစ္စကိုရေးပါမည်။
ဒေတာဘေ့စ်လုပ်ငန်းများကိုလုပ်ဆောင်သောအခါအမှားအယွင်းအမျိုးမျိုးကိုကျွန်ုပ်တို့ကြုံတွေ့ရနိုင်သည်။ MySQLI_STMT :: $ အမှား လုပ်ဆောင်ချက်သည် SQL ထုတ်ပြန်ကြေငြာချက်နှင့်သက်ဆိုင်သောအမှားအချက်အလက်များကိုဖမ်းယူရန်နည်းလမ်းတစ်ခုဖြစ်သည်။ နောက်ဆုံး SQL ထုတ်ပြန်ကြေငြာချက်အရဖြစ်ပွားခဲ့သောအမှားအယွင်းရှိအမှားအယွင်းများဖော်ပြချက်ပါ 0 င်သည့် string ကိုပြန်လည်ရောက်ရှိစေသည်။
public string mysqli_stmt::$error;
ပြန်လာတန်ဖိုး - SQL ကြေငြာချက်ကိုအကောင်အထည်ဖော်သောအခါအမှားမက်ဆေ့ခ်ျကိုကိုယ်စားပြုသည့် string ကိုကိုယ်စားပြုသည်။ အမှားအယွင်းမရှိပါကအချည်းနှီးသော string ကိုပြန်ပို့သည်။
MySQLI_STMT :: မှတစ်ဆင့် MySQL Questies တွင်အမှားအယွင်းများကိုမည်သို့ဖမ်းဆီးရမည်ကိုပြသနိုင်သည့်ရိုးရှင်းသော PHP PHOP ကိုကျွန်ုပ်တို့ရေးပါမည်။
<?php
// ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ
$host = 'localhost';
$user = 'root';
$password = '';
$dbname = 'test_db';
$conn = new mysqli($host, $user, $password, $dbname);
// ဒေတာဘေ့စ်ဆက်သွယ်မှုများကိုစစ်ဆေးပါ
if ($conn->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $conn->connect_error);
}
// ဒေတာထည့်ပါ SQL စုံစမ်းမှုကြေညာချက်
$sql = "INSERT INTO users (name, email) VALUES (?, ?)";
// အသုံးပြု prepare() လုပ်ဆောင်ချက်ပြင်ဆင်မှု SQL အသေအချာပေြာဆိုချက်
$stmt = $conn->prepare($sql);
// 检查အသေအချာပေြာဆိုချက်是否ပြင်ဆင်ထား成功
if (!$stmt) {
die("ပြင်ဆင်ထား SQL အသေအချာပေြာဆိုချက်失败: " . $conn->error);
}
// parameters တွေကိုချည်ထား
$name = 'John Doe';
$email = '[email protected]'; // အသုံးပြု gitbox.net တစ် ဦး မေးလ်ဒိုမိန်းအမည်အဖြစ်
$stmt->bind_param("ss", $name, $email);
// ကရိယာတန်းဆာ SQL မေးမြန်း
if (!$stmt->execute()) {
// 如果ကရိယာတန်းဆာ失败,output error message
echo "ကရိယာတန်းဆာမေးမြန်း时出错: " . $stmt->error;
} else {
echo "ဒေတာသွင်းအောင်မြင်စွာ!";
}
// ဆက်သွယ်မှုကိုပိတ်ပါ
$stmt->close();
$conn->close();
?>
ဒေတာဘေ့စ်ဆက်သွယ်မှု - ပထမအချက်မှာ MySQL ဒေတာဘေ့စ်နှင့်ဆက်သွယ်မှုတစ်ခုဖန်တီးသည်။ ဆက်သွယ်မှုသည်မအောင်မြင်ပါက Connection Error Message ကိုထုတ်လွှင့်ရန်နှင့်ကွပ်မျက်မှုကိုအဆုံးသတ်ရန် Die () ကို သုံးပါ။
SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်ပါ ။ ကျွန်ုပ်တို့သည် SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်ရန် ပြင်ဆင်ခြင်း () function ကိုအသုံးပြုသည်။ ပြင်ဆင်မှုလုပ်ငန်းစဉ်အတွင်းအမှားတစ်ခုဖြစ်ပါက MySQL ဆက်သွယ်မှုအဆင့်တွင်အမှားတစ်ခုကိုထုတ်ယူရန် $ conn-> အမှားကို သုံးပါ။
Bind Parametersents : SQL ထုတ်ပြန်ချက်များတွင် parameter များကို bind_param () function မှတဆင့် bind ။ ဤတွင်ကျွန်ုပ်တို့သည် အမည်များ နှင့် အီးမေးလ်ကို parameters များအဖြစ်ဖြတ်သန်းသွားသည်။
Execute query : SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါအမှားတစ်ခုဖြစ်ပါကကျွန်ုပ်တို့သည် MySQLI_STMT :: output ကိုဖမ်းယူရန် $ အမှားကို အသုံးပြုသည်။
Collection Connection : စစ်ဆင်ရေးပြီးစီးပြီးနောက် stmt နှင့် database connection ကိုပိတ်ပါ။
ကြိုတင်ပြင်ဆင်မှုအမှား - SQL ထုတ်ပြန်ချက်များကိုပြင်ဆင်သောအခါ settax အမှားများသို့မဟုတ်အခြားပြ problems နာများကိုပြင်ဆင်သောအခါ ပြင်ဆင်ခြင်း () function သည် မှားယွင်းစွာ ပြန်ယူနိုင်သည် ။
Capture Execute Error : SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါအမှားတစ်ခုဖြစ်ပါက execute () function ကိုပြန်ပို့ခြင်း မှားယွင်းသော နှင့် MySQLI_STMT ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည်အမှားအယွင်းများကိုချက်ချင်းသတင်းပို့နိုင်ပြီးသက်ဆိုင်ရာအစီအမံများကိုပြုလုပ်နိုင်သည်။
သစ်ထုတ်လုပ်ခြင်း - ထုတ်လုပ်မှုပတ် 0 န်းကျင်တွင်လုံခြုံရေးမက်ဆေ့ခ်ျများသို့ 0 င်ရောက်ခြင်းကို 0 င်ရန်အကြံပြုသည်။
အရောင်းအ 0 ယ်များကိုအသုံးပြုခြင်းသည် SQL ထုတ်ပြန်ချက်များပါ 0 င်သည့်အခါကျွန်ုပ်တို့၏အချက်အလက်များတွင်ရှေ့နောက်ညီညွတ်မှုကိုသေချာစေရန်ကူညီနိုင်သည်။ အကယ်. စုံစမ်းမှုမအောင်မြင်ပါကတစ်စိတ်တစ်ပိုင်းမွမ်းမံမှုများအောင်မြင်ရန်နှင့်အခြားအစိတ်အပိုင်းများမအောင်မြင်သောအခြားအစိတ်အပိုင်းများကိုရှောင်ရှားရန်ငွေပေးငွေယူကိုကျွန်ုပ်တို့ပြန်လှိမ့်နိုင်သည်။
<?php
$conn->begin_transaction();
try {
// ကရိယာတန်းဆာ多个 SQL အသေအချာပေြာဆိုချက်
$stmt1 = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt1->bind_param("ss", $name, $email);
if (!$stmt1->execute()) {
throw new Exception("ကရိယာတန်းဆာ插入用户时出错: " . $stmt1->error);
}
$stmt2 = $conn->prepare("UPDATE users SET status = ? WHERE email = ?");
$stmt2->bind_param("ss", $status, $email);
if (!$stmt2->execute()) {
throw new Exception("ကရိယာတန်းဆာ更新用户状态时出错: " . $stmt2->error);
}
// တင်သွင်းမှုတင်သွင်း
$conn->commit();
} catch (Exception $e) {
// အမှားတစ်ခုဖြစ်ပေါ်လျှင်,ပြန်အရောင်းအလှိမ့်
$conn->rollback();
echo "ငွေပေးငွေယူပျက်ကွက်: " . $e->getMessage();
}
// ဆက်သွယ်မှုကိုပိတ်ပါ
$conn->close();
?>
ငွေပေးငွေယူ : ကျွန်ုပ်တို့သည် စတင်ခြင်းကိုစတင်ရန် စတင်ရန်စတင်အသုံးပြုမှုကိုစတင်ရန်, စစ်ဆင်ရေးတစ်ခုသည်အောင်မြင်မှုသို့မဟုတ်ပျက်ကွက်ကြောင်းသေချာစေရန်။
အမှားဖမ်းခြင်း - ခြွင်းချက်များကိုဖမ်းရန် Try-catch statement ကိုသုံးပါ။ SQL အမှားတစ်ခုဖြစ်သောအခါကျွန်ုပ်တို့သည်ငွေပေးငွေယူကိုပြန်လှည့်ပြီး ခြွင်းချက် မှတဆင့်သတ်သတ်မှတ်မှတ်အမှားသတင်းအချက်အလက်များကိုချမှတ်ခြင်းကိုပြန်လှိမ့်ချလိုက်သည်။
ကျူးလွန်ခြင်းသို့မဟုတ်ဖြန့်ချိမှု - စစ်ဆင်ရေးအားလုံးအောင်မြင်ပါကငွေပေးချေမှုကိုကျူးလွန်ရန် () ကတိကဝတ်ကို အသုံးပြုသည်။ အမှားတစ်ခုဖြစ်ပါကငွေပေးချေမှုကိုထုတ်ပြန်ရန် Rollback () ကို သုံးပါ။
MySQLI_STMT :: MySQL ဒေတာဘေ့စ်လုပ်ငန်းများတွင် Developer များကအမှားများကို SQL ထုတ်ပြန်ကြေငြာချက်တွင်အမှားအယွင်းများကိုလျင်မြန်စွာခွဲခြား သတ်မှတ်. ကိုင်တွယ်ဖြေရှင်းရန်အတွက်အဓိကအခန်းကဏ် plays မှပါ 0 င်သည်။ လက်တွေ့ကျသောအပလီကေးရှင်းများတွင်ကျွန်ုပ်တို့သည်အမှားကိုင်တွယ်သည့်နည်းစနစ်များကိုအပြည့်အဝအသုံးပြုခြင်း,
ထို့အပြင်ငွေပေးငွေယူအပြောင်းအလဲနဲ့အမှားလုပ်ခြင်းယန္တရားများမှတဆင့်ကျွန်ုပ်တို့သည်သမာဓိစောင့်သိမှုနှင့်ကိုက်ညီမှုရှိစေရန်အတွက်စနစ်၏ယုံကြည်စိတ်ချရမှုကိုတိုးတက်စေနိုင်သည်။