MySQL ဒေတာဘေ့စ်များကို PHP ကို အသုံးပြု. ချိတ်ဆက်ခြင်းနှင့်ကြိုးကိုင်မှုများကို MySQLI တိုးချဲ့ခြင်းသည် MySQLI :: မေးမြန်းမှု , MySQLI :: ပြင်ဆင်ရန် လိုသောနည်းစနစ်များကိုထောက်ပံ့ပေးသည်။ SQL ကို execute လုပ်ရန် အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် SQL သည်အောင်မြင်မှုရှိမရှိကိုအာရုံစိုက်ခြင်းအပြင်တစ်ခါတစ်ရံတွင်ကွပ်မျက်မှုလုပ်ငန်းစဉ်ကိုတစ်ခါတစ်ရံရရှိရန်လိုအပ်သည်။ ဤသတိပေးချက်များသည် SQL ကွပ်မျက်မှုမအောင်မြင်စေနိုင်သော်လည်း၎င်းတို့သည်အလားအလာရှိသောပြ problems နာများကိုဖုံးကွယ်ထားနိုင်သည်။
PHP ၏ MySQLI :: Get_warening Method သည်ဆက်သွယ်မှု၏နောက်ဆုံးစစ်ဆင်ရေးမှထုတ်ပေးသောသတိပေးချက်များအားလုံးကိုရနိုင်သည်။ သို့သော်၎င်းအသုံးပြုမှုသည်မကြာခဏစိတ်အနှောက်အယှက်ဖြစ်စေသည် ဖြစ်. ၎င်းကို module တစ်ခုထဲသို့ 0 င်နိုင်လျှင်၎င်းကိုစီမံကိန်းတွင်အလွယ်တကူပြန်လည်အသုံးချနိုင်ပြီးကုဒ်ကိုသပ်သပ်ရပ်ရပ်ထိန်းသိမ်းထားနိုင်သည်။
ဤဆောင်းပါးသည် MySQLI :: Get_warenings ကို ပြန်လည်သုံးသပ်နိုင်သော MySQL သတိပေးချက် Capture Module သို့မည်သို့ adapsate လုပ်ရမည်ကိုဖော်ပြရန်ဖော်ပြရန်ဖော်ပြရန်ဖြစ်သည်။
MySQLI :: Get_warenings () method method သည် MySQLI_Warning အရာဝတ်ထုများကိုရည်ညွှန်းသည်။ MySQLI_Warning အရာဝတ်ထုတစ်ခုစီတွင်အောက်ပါအချက်အလက်များပါရှိသည်။
မက်ဆေ့ခ်ျ : သတိပေးစာ
SQLSTATE : SQLSTATE အမှားကုဒ်
Errno : MySQL အမှားကုဒ်
ကျွန်ုပ်တို့၏ရည်မှန်းချက်မှာ Warnolllector အတန်းကိုအကောင်အထည်ဖော်ရန်ဖြစ်သည်။
MySQLI ဥပမာအားဖြင့်ချည်နှောင်ခြင်း,
SQL ထုတ်ပြန်ချက်များကို Execute လုပ်ပြီးသတိပေးသတင်းအချက်အလက်ကိုအလိုအလျောက်စုဆောင်းပါ။
သတိပေးသတင်းအချက်အလက်ကို format လုပ်ပြီး log သို့ပြန်သွားပါ။
လာမည့်စစ်ဆင်ရေးကိုအကျိုးသက်ရောက်ရန်ကျန်ရှိနေသေးသောသတိပေးသတင်းအချက်အလက်များကိုရှောင်ရှားရန်သန့်ရှင်းရေးနည်းလမ်းများကိုသတိပေးပါ။
အောက်ဖော်ပြပါသည်အကောင်အထည်ဖော်မှုကုဒ်ဖြစ်သည်။
<?php
class WarningCollector
{
private mysqli $conn;
private array $warnings = [];
public function __construct(mysqli $connection)
{
$this->conn = $connection;
}
public function execute(string $sql): bool|mysqli_result
{
$result = $this->conn->query($sql);
$this->collectWarnings();
return $result;
}
private function collectWarnings(): void
{
$this->warnings = []; // ဒေတာအဟောင်းကိုရှင်းရှင်းလင်းလင်း
$warning = $this->conn->get_warnings();
while ($warning) {
$this->warnings[] = [
'errno' => $warning->errno,
'sqlstate' => $warning->sqlstate,
'message' => $warning->message,
];
$warning = $warning->next();
}
}
public function getWarnings(): array
{
return $this->warnings;
}
public function hasWarnings(): bool
{
return !empty($this->warnings);
}
public function logWarnings(string $logPath = '/tmp/mysql_warnings.log'): void
{
if ($this->hasWarnings()) {
foreach ($this->warnings as $w) {
$entry = sprintf(
"[%s] MySQL Warning - Errno: %d, SQLSTATE: %s, Message: %s\n",
date('Y-m-d H:i:s'),
$w['errno'],
$w['sqlstate'],
$w['message']
);
file_put_contents($logPath, $entry, FILE_APPEND);
}
}
}
}
ဒီ module ကိုအသုံးပြုပြီးအလွန်ရိုးရှင်းပါသည်။ SQL ကိုမလုပ်ဆောင်မီဆက်သွယ်မှုကို encapsult လုပ်ရန်၎င်းကိုအသုံးပြုပါ။
<?php
$mysqli = new mysqli('localhost', 'user', 'pass', 'database');
$collector = new WarningCollector($mysqli);
// ကရိယာတန်းဆာ SQL
$sql = "INSERT INTO demo (name) VALUES ('duplicate-key')";
$collector->execute($sql);
// သတိပေးစစ်ဆေးပါ
if ($collector->hasWarnings()) {
$collector->logWarnings();
print_r($collector->getWarnings());
}
ဤ Encapsulations သည်အထူးစီမံကိန်းအမျိုးအစားများတွင်အထူးအသုံးဝင်သည်။
ဒေတာရွှေ့ပြောင်းရေးရာဇာတ်ညွှန်း - သတိပေးချက်သည်ကွင်းဆင်းခြင်းသို့မဟုတ်မတိုက်ဆိုင်မှုအမျိုးအစားကိုဖော်ပြနိုင်သည်။
Batch Import Tool - အချက်အလက်အမြောက်အများကိုထည့်သွင်းသောအခါကန့်သတ်ချက်နှင့်ပတ်သက်သောသတိပေးချက်များကိုအလွယ်တကူဖြစ်ပေါ်လာနိုင်သည်။
ဒေတာအရည်အသွေးစစ်ဆေးခြင်း - နောက်ပိုင်းခွဲခြမ်းစိတ်ဖြာခြင်းအတွက် Log System မှတဆင့်ဗဟိုမှသတိပေးချက်များစုဆောင်းခြင်း,
Larave, Symfony စသဖြင့်သင်မူဘောင်များကိုအသုံးပြုပါက၎င်းတို့ကိုဤအယူအဆတွင်မှီခိုအားထားသည့်အနေဖြင့်ဤအယူအဆကို အခြေခံ. Middleware (သို့) 0 န်ဆောင်မှုအတန်းများထဲသို့ထည့်နိုင်သည်။
MySQLI :: Get_warenings () သည် နောက်ဆုံးစစ်ဆင်ရေးမှရရှိသောသတိပေးချက်များကိုသာရနိုင်သည်။
အကယ်. သင်သည် ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များကို အသုံးပြုနေပါကသတိပေးခြင်းမပြုမီ သင်လုပ်ဆောင်ရန် သေချာစေရန်အကြံပြုပါသည်။
ကွဲပြားသော MySQL ဗားရှင်းများသည်သတိပေးချက်များအတွက်အနည်းငယ်သာကွဲပြားသောအထောက်အပံ့များရှိသည်။ ဖွံ့ဖြိုးတိုးတက်မှုနှင့်ထုတ်လုပ်မှုပတ် 0 န်းကျင်ဗားရှင်းများသည်တသမတ်တည်းဖြစ်ကြောင်းအကြံပြုသည်။
MySQLI :: get_warenings များကို get_warenings ထဲသို့ encapsulating အားဖြင့်ကျွန်ုပ်တို့သည် SQL သတိပေးချက်များကိုပိုမိုလွယ်ကူစွာဖမ်းယူနိုင်ရုံသာမကစနစ်၏ထိန်းသိမ်းမှုနှင့်အားကောင်းသောတိုးတက်မှုကိုပိုမိုကောင်းမွန်စေသည်။ သင်၏ Project channel အထောက်အပံ့, သတိပေးအဆင့်စီစစ်ခြင်းစသည်ဖြင့်သင်၏စီမံကိန်းတည်ဆောက်ပုံနှင့်အညီထပ်မံတိုးချဲ့နိုင်သည်။
ပြီးပြည့်စုံသောစီမံကိန်းဥပမာများအရ,
https://gitbox.net/example/mysql-warning-collector