PHP နှင့် MySQL ၏ MySQLI extension ကို အသုံးပြု. ကြေငြာချက်ဆိုင်ရာမေးမြန်းချက်များကိုကိုင်တွယ်သည့်အခါ Next_result () function သည်အရေးပါသောအခန်းကဏ် plays မှပါ 0 င်သည်။ ၎င်းသည်သင့်အားရလဒ်မျိုးစုံကိုရယူရန်ခွင့်ပြုသည်, သို့သော်တစ်ခါတစ်ရံတွင် "စည်းညှိခြင်းမှပညတ်များကိုသင်ယခု command ကိုမဖွင့်နိုင်ပါ။ logging မှတဆင့် လာမည့် function နှင့်ဆက်စပ်သောပြ problems နာများကိုရှာဖွေရန်နှင့်ပြ about နာများကိုရှာဖွေရန်နှင့်ဤဆောင်းပါးသည်ဤဆောင်းပါးသည်မည်သို့ဖြေရှင်းရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
MySQLI :: Multi_query () သည် သင်၏ရလဒ်ကို travers () ကိုဖြတ်သန်းရန်အသုံးပြုနေစဉ် Multi_query () သည်စုံစမ်းမှုတွင် SQL ထုတ်ပြန်ချက်များစွာပေးပို့ရန်ခွင့်ပြုသည်။ ဥပမာအားဖြင့်:
$mysqli = new mysqli("localhost", "user", "password", "database");
$sql = "SELECT * FROM users; SELECT * FROM orders;";
if ($mysqli->multi_query($sql)) {
do {
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
} while ($mysqli->next_result());
} else {
error_log("Query failed: " . $mysqli->error);
}
အကယ်. Next_result () ကို မှန်ကန်စွာ (သို့) အလယ်တွင်အမှားတစ်ခုဟုမခေါ်ပါက၎င်းသည်ဆက်သွယ်မှုအခြေအနေကိုခြွင်းချက်ဖြစ်စေလိမ့်မည်။
အမှားသတင်းစကား - "စည်းညှိခြင်းမှပညတ်များ, သင်ဤ command ကိုမ run နိုင်ပါ"
Query ပြတ်တောက်သွားသည်, ရလဒ်သည်မပြည့်စုံပါ
လာမယ့် SQL ဆက်ပြီးဆက်လက်ဆောင်ရွက်ရန်မရပါ
ဤပြ problems နာအများစုသည်ရလဒ်ကိုအပြည့်အဝမပြုပြင်သေးသော (သို့) Next_result () သို့ခေါ်ဆိုမှုကိုမခေါ်ပါ။
ပြ problems နာများကိုဖြေရှင်းရန်ကျွန်ုပ်တို့သည်အဆင့်တစ်ခုစီတွင်မှတ်တမ်းကို log လုပ်နိုင်ပြီးခေါ်ဆိုမှုလုပ်ငန်းစဉ်နှင့်အခြေအနေကိုခြေရာခံနိုင်သည်။ ဖိုင်များကိုမှတ်တမ်းတင်ရန် error_log () ကို အသုံးပြုရန်အကြံပြုသည်။
function log_step($message) {
$logFile = '/var/log/php_next_result_debug.log';
error_log(date("[Y-m-d H:i:s] ") . $message . PHP_EOL, 3, $logFile);
}
အထက်ပါစုံစမ်းမှုဥပမာနှင့်ပေါင်းစပ်။ ကျွန်ုပ်တို့သည်မှတ်တမ်း output ကိုထည့်သွင်းသည်။
$sql = "SELECT * FROM users; SELECT * FROM orders;";
if ($mysqli->multi_query($sql)) {
log_step("Multi-query started.");
do {
if ($result = $mysqli->store_result()) {
log_step("Result set retrieved.");
while ($row = $result->fetch_assoc()) {
log_step("Row: " . json_encode($row));
}
$result->free();
} elseif ($mysqli->errno) {
log_step("Error during store_result: " . $mysqli->error);
}
log_step("Calling next_result()...");
} while ($mysqli->next_result());
log_step("All result sets processed.");
} else {
log_step("Multi-query failed: " . $mysqli->error);
}
အသေးစိတ်ခြေရာခံရန်လိုအပ်သည်ဆိုပါက SQL အကြောင်းအရာ, Exitution Time နှင့် status code ကို SQL Execution Point တွင်မှတ်တမ်းတင်နိုင်သည်။ ထို့အပြင်၎င်းတို့အား elk, graylog, သို့မဟုတ်ကိုယ်ပိုင်တည်ဆောက်ထားသောသစ်ထုတ်လုပ်ရေးပလက်ဖောင်းများသို့ပို့ခြင်းဖြင့်မှတ်တမ်းများကိုအမြင်အာရုံဖြင့်ဖွဲ့စည်းနိုင်ပါသည်။
log_step("SQL Executed: " . $sql . " on https://gitbox.net/db-query-monitor");
ရလဒ်အလုံးအရင်းအားလုံးကိုအမြဲတမ်းလုပ်ဆောင်ပါ, Next_result () ဟုခေါ်ပါ။
လွယ်ကူသောသွေးဆောင်မှုအတွက်သော့ချက်ခြေလှမ်းတိုင်းကိုမှတ်တမ်းတင်ရန်မှတ်တမ်းများကိုသုံးပါ။
ခြွင်းချက်ဖြစ်ပေါ်သည့်အခါ MySQLI :: အမှား နှင့် mysqli :: errno ကို လျစ်လျူမရှုပါနှင့်။
၎င်းသည်လွယ်ကူစွာပြန်လည်သုံးသပ်ရန်အတွက်တည်ဆောက်ထားသော Log Logic ဖြင့်ပေါင်းစည်းထားသည့်စုံစမ်းမှုပုံစံကိုထည့်သွင်းထားနိုင်သည်။