လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> လာမည့် _resulult () function များဖြင့်ရလဒ်များကိုပြောင်းလဲခြင်းဖြင့်ဖြစ်ပေါ်လာသောပြ the နာကိုမည်သို့ရှာဖွေရမည်နည်း။

လာမည့် _resulult () function များဖြင့်ရလဒ်များကိုပြောင်းလဲခြင်းဖြင့်ဖြစ်ပေါ်လာသောပြ the နာကိုမည်သို့ရှာဖွေရမည်နည်း။

gitbox 1970-01-01

PHP နှင့် MySQL ၏ MySQLI extension ကို အသုံးပြု. ကြေငြာချက်ဆိုင်ရာမေးမြန်းချက်များကိုကိုင်တွယ်သည့်အခါ Next_result () function သည်အရေးပါသောအခန်းကဏ် plays မှပါ 0 င်သည်။ ၎င်းသည်သင့်အားရလဒ်မျိုးစုံကိုရယူရန်ခွင့်ပြုသည်, သို့သော်တစ်ခါတစ်ရံတွင် "စည်းညှိခြင်းမှပညတ်များကိုသင်ယခု command ကိုမဖွင့်နိုင်ပါ။ logging မှတဆင့် လာမည့် function နှင့်ဆက်စပ်သောပြ problems နာများကိုရှာဖွေရန်နှင့်ပြ about နာများကိုရှာဖွေရန်နှင့်ဤဆောင်းပါးသည်ဤဆောင်းပါးသည်မည်သို့ဖြေရှင်းရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ Next_Result ၏အခန်းကဏ် ence ကိုနားလည်ပါ။

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 () ကို မှန်ကန်စွာ (သို့) အလယ်တွင်အမှားတစ်ခုဟုမခေါ်ပါက၎င်းသည်ဆက်သွယ်မှုအခြေအနေကိုခြွင်းချက်ဖြစ်စေလိမ့်မည်။

2 ။ မကြာခဏမေးသောမေးခွန်းများ

  • အမှားသတင်းစကား - "စည်းညှိခြင်းမှပညတ်များ, သင်ဤ command ကိုမ run နိုင်ပါ"

  • Query ပြတ်တောက်သွားသည်, ရလဒ်သည်မပြည့်စုံပါ

  • လာမယ့် SQL ဆက်ပြီးဆက်လက်ဆောင်ရွက်ရန်မရပါ

ဤပြ problems နာအများစုသည်ရလဒ်ကိုအပြည့်အဝမပြုပြင်သေးသော (သို့) Next_result () သို့ခေါ်ဆိုမှုကိုမခေါ်ပါ။

3 ။ မှတ်တမ်းများကိုကြည့်ပါ

ပြ 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);
}

4 ။ SQL Execution ၏အမြင်အာရုံခြေရာခံခြင်း (optional ကို)

အသေးစိတ်ခြေရာခံရန်လိုအပ်သည်ဆိုပါက SQL အကြောင်းအရာ, Exitution Time နှင့် status code ကို SQL Execution Point တွင်မှတ်တမ်းတင်နိုင်သည်။ ထို့အပြင်၎င်းတို့အား elk, graylog, သို့မဟုတ်ကိုယ်ပိုင်တည်ဆောက်ထားသောသစ်ထုတ်လုပ်ရေးပလက်ဖောင်းများသို့ပို့ခြင်းဖြင့်မှတ်တမ်းများကိုအမြင်အာရုံဖြင့်ဖွဲ့စည်းနိုင်ပါသည်။

 log_step("SQL Executed: " . $sql . " on https://gitbox.net/db-query-monitor");

5 ။ အကျဉ်းချုပ်နှင့်အကြံပြုချက်များ

  1. ရလဒ်အလုံးအရင်းအားလုံးကိုအမြဲတမ်းလုပ်ဆောင်ပါ, Next_result () ဟုခေါ်ပါ။

  2. လွယ်ကူသောသွေးဆောင်မှုအတွက်သော့ချက်ခြေလှမ်းတိုင်းကိုမှတ်တမ်းတင်ရန်မှတ်တမ်းများကိုသုံးပါ။

  3. ခြွင်းချက်ဖြစ်ပေါ်သည့်အခါ MySQLI :: အမှား နှင့် mysqli :: errno ကို လျစ်လျူမရှုပါနှင့်။

  4. ၎င်းသည်လွယ်ကူစွာပြန်လည်သုံးသပ်ရန်အတွက်တည်ဆောက်ထားသော Log Logic ဖြင့်ပေါင်းစည်းထားသည့်စုံစမ်းမှုပုံစံကိုထည့်သွင်းထားနိုင်သည်။