လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI_STMT :: PHP ယူနစ်စစ်ဆေးမှုအတွက် $ အမှားအချက်အလက်များကို Capture လုပ်နည်း

MySQLI_STMT :: PHP ယူနစ်စစ်ဆေးမှုအတွက် $ အမှားအချက်အလက်များကို Capture လုပ်နည်း

gitbox 2025-05-28

PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင်အထူးသဖြင့်ဒေတာဘေ့စ်လုပ်ငန်းများကိုကိုင်တွယ်သောအခါအချက်အလက်များကိုဖမ်းယူရန်နှင့်လုပ်ငန်းစဉ်ကိုဖမ်းယူရန်အလွန်အရေးကြီးသည်။ အထူးသဖြင့် MySQL database, MySQLI_STMT :: $ အမှား သည် SQL query error uros များကိုရယူရန်အသုံးပြုသောပစ္စည်းတစ်ခုဖြစ်သည်။ ၎င်းသည် developer များရှာဖွေတွေ့ရှိရန်နှင့်ပြ problems နာများကိုအချိန်မီဖြေရှင်းနိုင်ရန်ကူညီနိုင်သည်။ ယူနစ်စမ်းသပ်ခြင်းပတ် 0 န်းကျင်တွင်သတင်းအချက်အလက်များကိုဖမ်းယူခြင်းနှင့်လုပ်ငန်းစဉ်များကိုဖမ်းယူရန်နှင့်လုပ်ငန်းစဉ်ဆိုင်ရာအချက်အလက်များကိုဖြည့်ဆည်းရန်နှင့်ဒေတာဘေ့စ်လုပ်ငန်းများ၏ debugging နှင့် optimization ထိရောက်မှုကိုတိုးတက်စေနိုင်သည်။

ဤဆောင်းပါးသည် MySQLI_STMT ကိုမည်သို့ဖမ်းယူရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။ : $ error error error error error message တွင် PHP ယူနစ်စမ်းသပ်မှုများဖြင့်သင့်အားပြေဒူခြင်းဆိုင်ရာအကြံပြုချက်များကိုပေးထားသည်။

1 ။ MySQLI_STMT :: ယူနစ်စမ်းသပ်မှုများတွင် $ အမှားကို သုံးပါ

ပထမ ဦး စွာကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်ဆက်သွယ်မှုတစ်ခုကိုဖန်တီးရန်နှင့် SQL query ကို execute လုပ်ရန်လိုအပ်သည်။ ဒေတာဘေ့စ်လုပ်ငန်းများကိုလုပ်ဆောင်သောအခါအမှားတစ်ခုဖြစ်ပါက MySQLI_STMT :: $ အမှားသည် အမှားအယွင်းကိုသိမ်းဆည်းလိမ့်မည်။ MySQLI_STMT :: $ အမှားကို မည်သို့ဖမ်းယူရမည်ကိုပြသသည့်ရိုးရှင်းသောဥပမာတစ်ခုရှိသည်။

 <?php
// ကျနော်တို့ကတစ် ဦး ထူထောင်ပါပြီဆိုပါစို့MySQLiဆက်
$mysqli = new mysqli("localhost", "user", "password", "database");

// 检查ဆက်是否成功
if ($mysqli->connect_error) {
    die("ဆက်失败: " . $mysqli->connect_error);
}

// ပြင်ဆင်ထားSQLစုံစမ်းမှုကြေညာချက်
$sql = "SELECT * FROM nonexistent_table"; // ရည်ရွယ်ချက်ရှိရှိမှားယွင်းသောစုံစမ်းမှု

// ကြိုတင်ပြင်ဆင်မှုများ
$stmt = $mysqli->prepare($sql);

if ($stmt === false) {
    // preprocessing ပျက်ကွက်လျှင်,အမှားများကိုဖမ်း
    echo "ကြိုတင်ပြင်ဆင်မှုများ错误: " . $mysqli->error;
} else {
    // တစ် ဦး စုံစမ်းမှု execute
    $stmt->execute();

    // Execution ရလဒ်များကိုစစ်ဆေးပါ
    if ($stmt->errno) {
        // ဖမ်းယူခြင်းနှင့် output အမှားမက်ဆေ့ခ်ျများ
        echo "Execute အမှား: " . $stmt->error;
    } else {
        echo "အောင်မြင်သောစုံစမ်းမှု";
    }
}

// 关闭ဆက်
$stmt->close();
$mysqli->close();
?>

ဒီဥပမာမှာကျွန်တော်တို့ဟာမတည်မငြိမ်ဖြစ်တဲ့ဇတ် မပါတဲ့ ဇယားအမည်ကိုတမင်တကာသုံးတယ်, အဲဒါကရှာဖွေမှုကိုကျရှုံးစေလိမ့်မယ်။ MySQLI_STMT :: $ အမှား နှင့် MySQLI_STMT :: MySQLI_STMT :: $ errno , အမှားမက်ဆေ့ခ်ျကိုဖမ်းယူနိုင်ပြီ။

2 ။ ယူနစ်စမ်းသပ်မှုများတွင်အမှားရိုက်ကူး

ယူနစ်စစ်ဆေးမှုပတ်ဝန်းကျင်တွင်ကျွန်ုပ်တို့သည် Phpunit မူဘောင်ကိုစမ်းသပ်ရန်သုံးနိုင်သည်။ MySQLI_STMT :: $ အမှားအယွင်း အမှားမက်ဆေ့ခ်ျကိုဖမ်းယူရန် Phpunit ၏အခိုင်အမာဆိုသည့်နည်းလမ်းကိုကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။ ဤတွင်အခြေခံယူနစ်စမ်းသပ်မှုဥပမာဖြစ်သည်။

 <?php
use PHPUnit\Framework\TestCase;

class DatabaseTest extends TestCase
{
    private $mysqli;

    protected function setUp(): void
    {
        // 设置数据库ဆက်
        $this->mysqli = new mysqli("localhost", "user", "password", "database");
    }

    public function testQueryExecutionError()
    {
        // ရည်ရွယ်ချက်အပေါ်မမှန်ကန်ကြောင်းမေးမြန်းခြင်းရေးသားခြင်း
        $sql = "SELECT * FROM nonexistent_table";
        $stmt = $this->mysqli->prepare($sql);

        // 确保ကြိုတင်ပြင်ဆင်မှုများ没有错误
        $this->assertFalse($stmt === false, "ကြိုတင်ပြင်ဆင်မှုများ失败: " . $this->mysqli->error);

        // တစ် ဦး စုံစမ်းမှု execute
        $stmt->execute();

        // ကွပ်မျက်အောင်မြင်မှုရှိမရှိစစ်ဆေးပါ
        $this->assertEquals(0, $stmt->errno, "စုံစမ်းမှုကွပ်မျက်မှုမအောင်မြင်ပါ: " . $stmt->error);
    }

    protected function tearDown(): void
    {
        // 关闭数据库ဆက်
        $this->mysqli->close();
    }
}
?>

ဤယူနစ်စမ်းသပ်မှုတွင်ကျွန်ုပ်တို့သည်မအောင်မြင်သောဒေတာဘေ့စ်လည်ပတ်မှုကိုတုပရန်မမှန်ကန်ကြောင်းမေးမြန်းခြင်းကိုတမင်တကာအသုံးပြုခဲ့သည်။ $ THE-> THAYFALSE နှင့် $ THAYFALSE နှင့် $ THAYEFARES နည်းလမ်းများသည် SQL query အောင်မြင်စွာကွပ်မျက်ခံရကြောင်းအတည်ပြုရန်အသုံးပြုသည်။ အမှားတစ်ခုဖြစ်ပါကကျွန်ုပ်တို့အား Debugug ကိုကူညီရန်သက်ဆိုင်ရာအမှားအယွင်းကိုထုတ်ပေးလိမ့်မည်။

3 ။ အမှားမက်ဆေ့ခ်ျများနှင့်မှတ်တမ်းမှတ်တမ်းများကိုဖမ်းယူခြင်း

အမှားသတင်းအချက်အလက်များကိုတိုက်ရိုက်ထုတ်လွှင့်မှုဆိုင်ရာပတ်ဝန်းကျင်တွင်တိုက်ရိုက်ထုတ်လွှခြင်းအပြင်နောက်ပိုင်းတွင်ကြည့်ရှုရန်မှတ်တမ်းတွင်လည်းအမှားအချက်အလက်များကိုလည်းမှတ်တမ်းတင်နိုင်သည်။ အောက်ပါဥပမာသည် MySQLI_STMT ကို log လုပ်ရမည်ကိုပြသသည်။

 <?php
// ကျနော်တို့ကတစ် ဦး ထူထောင်ပါပြီဆိုပါစို့MySQLiဆက်
$mysqli = new mysqli("localhost", "user", "password", "database");

if ($mysqli->connect_error) {
    die("ဆက်失败: " . $mysqli->connect_error);
}

$sql = "SELECT * FROM nonexistent_table";
$stmt = $mysqli->prepare($sql);

if ($stmt === false) {
    error_log("ကြိုတင်ပြင်ဆင်မှုများ错误: " . $mysqli->error, 3, "/var/log/mysql_errors.log");
} else {
    $stmt->execute();

    if ($stmt->errno) {
        error_log("Execute အမှား: " . $stmt->error, 3, "/var/log/mysql_errors.log");
    }
}

$stmt->close();
$mysqli->close();
?>

ဤဥပမာတွင် error_log function ကို /Var/Log/mysqlqlqlqlqlqlqlqls.log ဖိုင်သို့အမှားအယွင်းများကိုမှတ်တမ်းတင်ရန်အသုံးပြုသည်။ ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည်အမှားအချက်အလက်များကိုမဆုံးရှုံးနိုင်ကြောင်းသေချာစေရန်နှင့် Post-analysis ကိုအဆင်ပြေစွာပြုလုပ်နိုင်သည်။

အကျဉ်းချုပ်

MySQLI_STMTT ကို အသုံးပြု. အမှားအယွင်းများကိုဖမ်းယူခြင်းနှင့်ကိုင်တွယ်ခြင်းဖြင့် developer များကဒေတာဘေ့စ်စစ်ဆင်ရေးများကိုပိုမိုလွယ်ကူစွာ debug လုပ်ရန်နှင့် outzug လုပ်နိုင်သည်။ PHP ယူနစ်စမ်းသပ်မှုများတွင် Phpunit Framework ကို အသုံးပြု. အမှားများကိုဖမ်းရန်နှင့်ကျွန်ုပ်တို့၏ကျင့် 0 တ်အား 0 င်ရောက်မှုကိုပိုမိုတိုးတက်စေရန်အခိုင်အမာပြုလုပ်နိုင်သည်။ ထို့အပြင်သစ်ထုတ်လုပ်ခြင်းသည်အလားအလာရှိသောပြ problems နာများကိုခြေရာခံရန်နှင့်ဖြေရှင်းရန်အတွက်ကောင်းမွန်သောအလေ့အကျင့်လည်းဖြစ်သည်။

PHP မှတစ်ဆင့်ကြံ့ခိုင်သောဒေတာဘေ့စ်စစ်ဆင်ရေးကုဒ်ကိုပိုမိုရေးလိုပါကဤအကြံပြုချက်များကိုလေ့လာရန်သေချာပါစေ။