PHP တွင်ဒေတာဘေ့စ်လုပ်ငန်းများသည် developer များနေ့စဉ်အလုပ်၏မရှိမဖြစ်လိုအပ်သောအစိတ်အပိုင်းတစ်ခုဖြစ်သည်။ စွမ်းဆောင်ရည်တိုးတက်စေရန်နှင့် SQL ဆေးထိုးတိုက်ခိုက်မှုများကိုကာကွယ်ရန် MySQLI မှတိုးချဲ့ထားသောပြင်ဆင်ထားသောထုတ်ပြန်ချက်များကိုအသုံးပြုခြင်းသည်အလွန်အမင်းအကြံပြုထားသည့်နည်းလမ်းဖြစ်သည်။ ဤဆောင်းပါးသည် MySQLI Fetch_firefields ၏အသုံးပြုမှုလုပ်ငန်းစဉ်ကိုအသေးစိတ်မိတ်ဆက်ပေးမည်။ PHP တွင် ပြင်ဆင်ခြင်း နှင့် bind_result
ပထမ ဦး စွာကျွန်ုပ်တို့သည်ဒေတာဘေ့စ်ဆက်သွယ်မှုတစ်ခုကိုဖန်တီးရန်လိုအပ်သည်။ ထို့နောက်ကျွန်ုပ်တို့သည် SQL ကြေငြာချက်ကိုပြင်ဆင်ရန် ပြင်ဆင်ရန် နည်းလမ်းကိုသုံးနိုင်သည်။ ဤနည်းလမ်းသည် SQL query ကို parameter တစ်ခုအဖြစ်လက်ခံပြီးပြင်ဆင်ထားသည့်ကြေညာချက်အရာဝတ်ထုကိုပြန်ပို့သည်။
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
$query = "SELECT id, name, email FROM users WHERE active = ?";
$stmt = $mysqli->prepare($query);
အထက်ဖော်ပြပါကုဒ်များတွင် ကြိုတင်ပြင်ဆင်ထားသော နည်းလမ်းသည် SQL ကြေငြာချက်ကိုကြိုတင်ထုတ်ဖော်ပြောဆိုခြင်းနှင့်နောက်ဆက်တွဲ parameter ကိုပြင်ဆင်ရန်ပြင်ဆင်သည်။
ထို့နောက်ကျွန်ုပ်တို့သည် parameters တွေကိုချည်ရန်လိုအပ်သည်။ bind_param နည်းလမ်းသည်အမှန်တကယ် parameter တန်ဖိုးကို SQL ကြေငြာချက်သို့ချည်နှောင်နိုင်သည်။ ဤဥပမာတွင်မေးမြန်းချက်သည် တက်ကြွသော လယ်ကွင်းများမှတဆင့်အချက်အလက်များကိုစစ်ထုတ်သည်, ထို့ကြောင့်ကျွန်ုပ်တို့သည် parameter ကိုချည်နှောင်ရန်လိုအပ်သည် ။
$active = 1;
$stmt->bind_param("i", $active); // "i"Integer အမျိုးအစားကိုညွှန်ပြ
bind_param နည်းလမ်း၏ပထမဆုံး pareter သည် SQL ကြေငြာချက်တွင် parameter တစ်ခုစီကိုကိုယ်စားပြုသည့် string တစ်ခုဖြစ်သည်။ ဘုံအမျိုးအစားများမှာ -
i : ကိန်း
D : နှစ်ဆတိကျသောမျောနေသောအချက်များ
S : string ကို
B : Blob အမျိုးအစားဒေတာ
ဤဥပမာတွင်ကျွန်ုပ်တို့သည်ကိန်းဂဏန်းအမျိုးအစား parameter ( $ action ) ကိုချည်နှောင်ထားသည်။
parameters တွေကို binding ပြီးနောက် SQL ကြေငြာချက်ကို execute method မှတဆင့် execute method မှတဆင့် execute လုပ်နိုင်သည်။
$stmt->execute();
ယခုအချိန်တွင် SQL query ကိုကွပ်မျက်ခံရလိမ့်မည်, သို့သော်ဒေတာများကိုမပြန်သေးပါ။ ကျွန်ုပ်တို့သည် query ၏ဖွဲ့စည်းပုံကို Fetch_firefifields မှတစ်ဆင့်ရယူရန်လိုအပ်ပြီး Bind_Result မှတစ်ဆင့်ကော်လံတစ်ခုစီ၏တန်ဖိုးကိုချည်နှောင်ရန်လိုအပ်သည်။
Fetch_fields နည်းလမ်းသည်ကော်လံအမည်, အမျိုးအစားစသည်ဖြင့်ရှာဖွေမှုရလဒ်များအပါအ 0 င်ရှာဖွေမှုရလဒ်၏နယ်ပယ်သတင်းအချက်အလက်များကိုရရှိနိုင်သည်။
$fields = $stmt->fetch_fields();
foreach ($fields as $field) {
echo "Field Name: " . $field->name . "<br>";
echo "ကွင်းဆင်းအမျိုးအစား: " . $field->type . "<br>";
}
အထက်ပါကုဒ်သည်ကွင်းတစ်ခုစီ၏အမည်နှင့်အမျိုးအစားကိုထုတ်ပေးလိမ့်မည်။ Fetch_fields method မှပြန်လာသောကွင်းဆင်းအရာဝတ်ထုတွင်ဒေတာဘေ့စ်စားပွဲ၏ဖွဲ့စည်းပုံသတင်းအချက်အလက်ကိုရယူရန်တည်ဆောက်သူများကိုလွယ်ကူချောမွေ့စေသည်။
စုံစမ်းမှုကိုအကောင်အထည်ဖော်ပြီးနောက်, query from query frother ၏ကော်လံကို Bind_Result Method မှတဆင့် PHP variable ကိုခညျြနှောငျရန်လိုအပ်သည်။ bind_result နည်းလမ်းသည် variable များကိုဖြတ်သန်းခြင်းဖြင့်သတ်မှတ်ခြင်းဖြင့်အချက်အလက်များကိုအချက်အလက်များကိုထုတ်ယူရန်ခွင့်ပြုသည်။
$stmt->bind_result($id, $name, $email);
ဤနေရာတွင်ကျွန်ုပ်တို့သည် query ရလဒ်ရှိ ID , အမည် နှင့် အီးမေးလ်များ ကို $ ID , $ အမည် နှင့် $ email variable များကိုအသီးသီးအသီးသီးတွင်ချည်နှောင်ထားသည်။
ရလဒ် variable ကို binding ပြီးနောက်, ကျနော်တို့ query ရလဒ်များကိုဖွင့်လှစ်ရန် ferch နည်းလမ်းကိုသုံးနိုင်သည်။
while ($stmt->fetch()) {
echo "ID: $id, Name: $name, Email: $email<br>";
}
ရယူခြင်း နည်းလမ်းသည်ဒေတာအတန်းအတန်းကိုအောင်မြင်စွာရရှိခြင်းရှိမရှိညွှန်ပြသည့် boolean value ကိုပြန်ပို့သည်။ အကယ်. ဝယ်ယူမှုအောင်မြင်လျှင်လက်ရှိအတန်း၏ဒေတာကိုခညျြနှောငျ variable မှတဆင့်ဝင်ရောက်နိုင်ပါတယ်။
စစ်ဆင်ရေးအားလုံးပြီးပြည့်စုံသောအခါအရင်းအမြစ်များကိုအခမဲ့ပေးရန်ပြင်ဆင်ထားသည့်ထုတ်ပြန်ချက်များနှင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုများကိုပိတ်ရန်သတိရပါ။
$stmt->close();
$mysqli->close();
အထက်ပါအဆင့်များကိုပေါင်းစည်းပါ, နောက်ဆုံးပြည့်စုံသောကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $mysqli->connect_error);
}
$query = "SELECT id, name, email FROM users WHERE active = ?";
$stmt = $mysqli->prepare($query);
$active = 1;
$stmt->bind_param("i", $active);
$stmt->execute();
$fields = $stmt->fetch_fields();
foreach ($fields as $field) {
echo "Field Name: " . $field->name . "<br>";
echo "ကွင်းဆင်းအမျိုးအစား: " . $field->type . "<br>";
}
$stmt->bind_result($id, $name, $email);
while ($stmt->fetch()) {
echo "ID: $id, Name: $name, Email: $email<br>";
}
$stmt->close();
$mysqli->close();
?>
သက်ဆိုင်သောတက်(ဂ်)များ:
fetch_fields