MySQLI :: Get_warenings သည် SQL ထုတ်ပြန်ချက်များကိုအကောင်အထည်ဖော်သည့်အခါသတိပေးချက်များအားလုံးပါ 0 င်သည့် MySQLI_Warning အရာဝတ်ထုများကိုပေါင်းစပ်ထားသည်။ အချက်အလက်များစစ်ဆေးခြင်းကဲ့သို့သောအချက်အလက်များစစ်ဆေးခြင်း, ဒေတာအမျိုးအစားမတိုက်ဆိုင်, ညွှန်းကိန်းများ, အညွှန်းကိန်းများ,
သို့သော်၎င်းသည်ဤနည်းလမ်းကိုတိုက်ရိုက်ခေါ်ဆိုရန်ခက်ခဲသည်, ၎င်းသည်ပြန်လာသော Linked List ဖွဲ့စည်းပုံကိုဖြတ်သန်းရန်လိုအပ်သည်။ ၎င်းကိုစာသင်ခန်းတစ်ခုသို့ encapsating လုပ်ပြီးနောက်ခေါ်ဆိုမှုဖြစ်စဉ်ကိုရိုးရှင်းအောင်ပြုလုပ်နိုင်ပြီးသတိပေးသတင်းအချက်အလက်ကိုတစ်ပုံစံတည်းဖြင့်ကိုင်တွယ်နိုင်သည်။
ဒေတာဘေ့စ်ယာဉ်မောင်းအတန်းတွင်သတိပေးသတင်းအချက်အလက်ရယူရန်အများပြည်သူနည်းလမ်းကိုထည့်ပါ။
ဤနည်းလမ်းသည် MySQLI :: Get_warenings နှင့်သတိပေးစာရင်းတွင်ပါ 0 င်သည်။ သတိပေးချက်အားလုံးကိုသတိပေးစာရင်းအားလုံးကိုခွဲထုတ်ခြင်း,
လွယ်ကူသောသစ်ထုတ်လုပ်မှုသို့မဟုတ် display ကိုများအတွက် format ချ output ကိုထောက်ပံ့ပေးသည်။
အလားအလာရှိသောပြ problems နာများကိုရိုက်ကူးရန် SQL စစ်ဆင်ရေးများကိုလုပ်ဆောင်ပြီးနောက်ဤနည်းလမ်းကိုလိုလားသည်။
<?php
class DatabaseDriver
{
/** @var mysqli */
protected $mysqli;
public function __construct($host, $user, $password, $dbname, $port = 3306)
{
$this->mysqli = new mysqli($host, $user, $password, $dbname, $port);
if ($this->mysqli->connect_errno) {
throw new Exception("Connect failed: " . $this->mysqli->connect_error);
}
}
/**
* ကရိယာတန်းဆာ SQL မေးမြန်း
*
* @param string $sql
* @return mysqli_result|bool
*/
public function query(string $sql)
{
$result = $this->mysqli->query($sql);
// မေးမြန်း后可以检查警告
$warnings = $this->getWarnings();
if (!empty($warnings)) {
// သင်ဒီမှာ logging သို့မဟုတ်ခြွင်းချက်ကိုင်တွယ်နိုင်ပါတယ်
foreach ($warnings as $warning) {
error_log("MySQL Warning [{$warning['errno']}]: {$warning['message']} (SQLSTATE: {$warning['sqlstate']})");
}
}
return $result;
}
/**
* လက်ရှိဆက်သွယ်မှုအတွက်သတိပေးစာအားလုံးကိုရယူပါ
*
* @return array သတိပေးစာခင်းကျင်း,တစ်ခုချင်းစီကိုဒြပ်စင်ပါဝင်သည် errno, sqlstate, message
*/
public function getWarnings(): array
{
$warnings = [];
$warning = $this->mysqli->get_warnings();
while ($warning) {
$warnings[] = [
'errno' => $warning->errno,
'sqlstate' => $warning->sqlstate,
'message' => $warning->message,
];
$warning = $warning->next;
}
return $warnings;
}
public function close()
{
$this->mysqli->close();
}
}
// အသုံးပြုမှုဥပမာ
$db = new DatabaseDriver('localhost', 'root', 'password', 'testdb');
$db->query("INSERT INTO users (id, name) VALUES (1, 'Alice')");
$db->close();
Get_warenings သည် လက်ရှိဆက်သွယ်မှုအတွက်သတိပေးချက်တစ်ခုရရှိပြီး၎င်းတို့ကိုသန့်ရှင်းရေးမပြုပါကသို့မဟုတ်စနစ်တကျမသုံးပါကသတိပေးအဟောင်းကိုထပ်ခါတလဲလဲဖတ်ရှုနိုင်သည်။ များသောအားဖြင့်ကြေ ငြာ ချက်တစ်ခုစီကိုကွပ်မျက်ခံရပြီးသည့်အခါ,
Encapsulation အတွက်သတိပေးအချက်အလက်များကိုသတိပေးအချက်အလက်များပြန်ပို့ရန်အကြံပြုသည်။ ခေါ်ဆိုမှုအလွှာသည်မှတ်တမ်းများကိုမှတ်တမ်းတင်ခြင်းသို့မဟုတ်ခြွင်းချက်များကိုမှတ်တမ်းတင်ခြင်းရှိမရှိဆုံးဖြတ်နိုင်သည်။
အစောပိုင်း PHP ဗားရှင်းအချို့သည် Get_warenings အတွက်မပြည့်စုံသောအထောက်အပံ့များရှိသည်။ ဗားရှင်းသွယ်ဝိုက်ခြင်းကို encapsularating on or version ကိုင်တွယ်သည့်နည်းလမ်းများသို့ပြန်ရောက်စေရန်ဗားရှင်းစစ်ဆေးခြင်းကိုအသုံးပြုသင့်သည်။
MySQLI :: Get_warenings ကို ဒေတာဘေ့စ်၏အတန်းထဲတွင် Encapsulning encapsufulnings code ကိုပြန်လည်သုံးသပ်ခြင်းကိုတိုးတက်စေရုံသာမက, ကျိုးကြောင်းဆီလျော်သော encapsulation နှင့်ခေါ်ဆိုမှုဖြင့်စနစ်၏ကြံ့ခိုင်မှုနှင့် debugging စွမ်းရည်များကိုအလွန်တိုးမြှင့်နိုင်သည်။
အကယ်. သင်သည်ဒေတာဘေ့စ်ယာဉ်မောင်းအတန်းကိုဒီဇိုင်းဆွဲခြင်းသို့မဟုတ်ထိန်းသိမ်းထားသည်ဆိုပါကသတိပေးချက်ယန္တရားများကိုထည့်သွင်းရန်နှင့်ဒေတာဘေ့စ်လုပ်ငန်းများအားပိုမိုပွင့်လင်းမြင်သာမှုရှိစေရန် Log သို့မဟုတ် Nonubline ယန္တရားများဖြင့်ပေါင်းစပ်ရန်အထူးအကြံပြုလိုပါသည်။