လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> MySQLI_STMT :: attr_et_et function သည် Legacy တွင်မည်သို့အလုပ်လုပ်ရမည်နည်း။

MySQLI_STMT :: attr_et_et function သည် Legacy တွင်မည်သို့အလုပ်လုပ်ရမည်နည်း။

M66 2025-06-23

PHP ဖွံ့ဖြိုးတိုးတက်မှုတွင် MySQLI extension ကို previce extension proprocessing ထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းသည် SQL Injection ကိုထိရောက်စွာတားဆီးနိုင်ပြီးဒေတာဘေ့စ်လုပ်ငန်း၏လုံခြုံရေးနှင့်ထိရောက်မှုကိုတိုးတက်စေသည်။ MySQLI_STMT :: AttR_Get သည် MySQLI ရှိလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။

သို့သော်အချို့သော PHP ပတ် 0 န်းကျင်တွင် MySQLI_STMT :: AttR_Get function သည်မတည်ငြိမ်မှုသို့မဟုတ်မအောင်မြင်သောပြ problems နာများရှိနိုင်သည်။ ဤဆောင်းပါးသည် MySQLI_STMT :: AttAt PHP ပတ်ဝန်းကျင်တွင်တည်ငြိမ်စွာအလုပ်လုပ်စေရန်အတွက်လက်တွေ့ကျသောဖြေရှင်းနည်းကိုမျှဝေပါလိမ့်မည်။

1 ။ MySQLI_STMT :: Attr_get ၏သဟဇာတဖြစ်သော ::

MySQLI_STMT :: Att_Get function ကို PHP 5.3 နှင့်အထက်တွင်သာထောက်ပံ့သည်။ သင်၏ပတ်ဝန်းကျင်ကိုအစောပိုင်းကသို့မဟုတ် MySQLI extension ကိုအပြည့်အဝမဖွင့်ပါကဤနည်းလမ်းကိုခေါ်ဆိုသည့်အခါအမှားတစ်ခုသို့မဟုတ်အမူအကျင့်ဆိုင်ရာခြွင်းချက်များအစီရင်ခံလိမ့်မည်။

ထို့ကြောင့်ပထမခြေလှမ်းမှာ PHP ဗားရှင်းနှင့် extension support ကိုစစ်ဆေးရန်ဖြစ်သည်။

 if (version_compare(PHP_VERSION, '5.3.0', '<')) {
    die('ယခု PHP မူကွဲကိုမပံ့ပိုးပါ mysqli_stmt::attr_get လုပ်ဆောင်ချက်。');
}
if (!extension_loaded('mysqli')) {
    die('တင်မတင် MySQLi တိုးချဲ့,မရရှိနိုင်ပါ mysqli_stmt::attr_get。');
}

2 ။ အသုံးပြုမှုအခြေအနေများကိုစစ်ဆေးခြင်းသည်လိုက်ဖက်မှုသေချာစေသည်

attra_get ကို မခေါ်မီ function မတည်ရှိခြင်းမရှိသောကြောင့်ပရိုဂရမ်ပျက်ကျမှုကိုရှောင်ရှားရန် function သို့မဟုတ်နည်းလမ်းဖြစ်တည်မှုကိုအသုံးပြုပါ။

 $stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");

if (method_exists($stmt, 'attr_get')) {
    $attr = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
    echo "ယခုattribute တန်ဖိုး: " . $attr;
} else {
    echo "ယခု环境မပံ့ပိုးပါ attr_get နည်းလမ်း,ဒီစစ်ဆင်ရေးကိုကျော်လိုက်ပါ。";
}

ဤနည်းအားဖြင့် PHP ဗားရှင်းဟောင်းများတွင်ပင်အစီအစဉ်သည်လုံခြုံစွာပြေးနိုင်ပြီးနည်းလမ်းကိုရှာမတွေ့နိုင်သောကြောင့်အမှားတစ်ခုသတင်းပို့နိုင်မည်မဟုတ်ပါ။

3 ။ attr_get function ကို Simulate လုပ်ရန်အခြားနည်းလမ်း

အကယ်. သင်သည် attribute အချို့ရရန်လိုအပ်ပါက attri_get မရရှိနိုင်ပါကသင်၏လိုအပ်ချက်များအပေါ် အခြေခံ. အခြားရွေးချယ်စရာယုတ္တိဗေဒကိုဒီဇိုင်းဆွဲနိုင်သည်။ ဥပမာအားဖြင့်အချို့သောဂုဏ်သတ္တိများ၏တန်ဖိုးများကိုသက်ဆိုင်ရာ SQL ကြေငြာချက်သို့မဟုတ် configuration parameters များကိုကွပ်မျက်ခြင်းဖြင့်ရရှိနိုင်သည်။

 // သင်အဆင့်မြှင့်တင်ထားသောအမြင့်ဆုံးအရှည် attribute ကိုရယူရန်လိုအပ်သည်ဟုယူဆပါ,သငျသညျအစားအစား default values ​​ကိုသုံးနိုင်သည်သို့မဟုတ် query configuration ကိုသုံးနိုင်သည်
$update_max_length = defined('MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH') ? MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH : null;

if ($update_max_length === null) {
    // ဗားရှင်းအဟောင်း PHP မရရှိနိုင်ခြင်း,ကျိုးကြောင်းဆီလျော်သော default တန်ဖိုးကိုကိုယ်တိုင်ချထားပါ
    $update_max_length_value = 1024;
} else {
    $update_max_length_value = $stmt->attr_get($update_max_length);
}

echo "အမြင့်ဆုံးအရှည် attribute ကိုတန်ဖိုးကို update လုပ်ပါ: " . $update_max_length_value;

4 ။ PHP ဗားရှင်းကိုအဆင့်မြှင့်ပါသို့မဟုတ်လိုက်ဖက်တဲ့စာကြည့်တိုက်ကိုသုံးပါ

အထက်ဖော်ပြပါနည်းလမ်းမှာကုဒ်၏တည်ငြိမ်မှုကိုအတိုင်းအတာတစ်ခုအထိအတိုင်းအတာတစ်ခုအထိသေချာစေနိုင်သော်လည်းရေရှည်တွင် MySQLI_STMMT :: Attr_et ကို ထောက်ပံ့သော PHP ဗားရှင်းသို့အဆင့်မြှင့်တင်ခြင်းကိုသေချာစေနိုင်သည်။ ထို့အပြင် pdo သို့မဟုတ် third-party database abstraction abstracter layer စာကြည့်တိုက်များ အသုံးပြု. စာကြည့်တိုက်ကို အသုံးပြု. စာမူများကိုအသုံးပြုခြင်းကိုစဉ်းစားပါ။

5 ။ နမူနာကုဒ်အကျဉ်းချုပ်

 $mysqli = new mysqli('m66.net', 'username', 'password', 'database');

if ($mysqli->connect_errno) {
    die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}

$stmt = $mysqli->prepare("SELECT * FROM users WHERE id = ?");
if (!$stmt) {
    die("Preprocessing မအောင်မြင်ပါ: " . $mysqli->error);
}

$id = 1;
$stmt->bind_param('i', $id);

if (method_exists($stmt, 'attr_get')) {
    $attr_value = $stmt->attr_get(MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH);
    echo "attribute တန်ဖိုး: " . $attr_value;
} else {
    echo "attr_get မပံ့ပိုးပါ,ခုန်ကျော်သည်。";
}

$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    print_r($row);
}

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