PHP Development တွင် နောက် function သည်ဒေတာဘေ့စ်လုပ်ငန်းများနှင့်သက်ဆိုင်သော function တစ်ခုဖြစ်ပြီး Multi-query set query query နှင့်သက်ဆိုင်သောလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ ၎င်း၏အခန်းကဏ် sour သည်လက်ရှိစုံစမ်းမှုအစုကိုကျော်သွားပြီးပရိုဂရမ်ကိုဆက်လက်လုပ်ဆောင်ရန်အတွက်အထူးသဖြင့် SQL Query များကိုကိုင်တွယ်သောအခါ,
သို့သော်အခြေခံဒေတာဘေ့စ်လုပ်ငန်းများအပြင်အချို့သောဘုံဒီဇိုင်းပုံစံများကို နောက်တစ်ခေါက် () function ကိုအကောင်အထည်ဖော်ခြင်းနှင့်အသုံးပြုခြင်း၏နောက်ကွယ်တွင်လည်းထင်ဟပ်နိုင်သည်။ ဤဆောင်းပါးသည်ဤဒီဇိုင်းပုံစံများကိုစူးစမ်းလေ့လာပြီးလက်တွေ့ကျသောအပလီကေးရှင်းများတွင်သူတို့မည်သို့ထင်ဟပ်ကြောင်းရှင်းပြလိမ့်မည်။
Next_result () function ကိုအများဆုံးတိုက်ရိုက်ပြသခြင်းသည် iTerator ပုံစံဖြစ်သည်။ ITERATE ပုံစံသည် developer များအား data structure ကိုဖော်ထုတ်ခြင်းမရှိဘဲ developer များကို data collection များကိုဖြတ်သန်းရန်ခွင့်ပြုသည်။ ဒေတာဘေ့စ်မေးမြန်းချက်များတွင်ရလဒ်မျိုးစုံကိုပြန်လည်ပေးပို့နိုင်သည်။ Next_result () သည် စုံစမ်းမှုရလဒ်အပြည့်အဝအကြား developer များကိုပြောင်းရန်ကူညီသော ITERATE တစ်ခုနှင့်တူသည်။
ကျွန်ုပ်တို့သည် sqlult (1) ခုပါ 0 င်သည့် SQL ကြေငြာချက်တစ်ခုပြုလုပ်ပါ။ ဥပမာအားဖြင့်:
$sql = "SELECT * FROM users; SELECT * FROM products; SELECT * FROM orders;";
mysqli_multi_query($conn, $sql);
do {
if ($result = mysqli_store_result($conn)) {
while ($row = mysqli_fetch_assoc($result)) {
echo $row['name'] . "<br>";
}
mysqli_free_result($result);
}
} while (mysqli_next_result($conn));
အထက်ပါကုဒ်တွင် MySQLI_NEXt_RESult ($ consult) သည် iTerator ပုံစံ၏ impodiment တစ်ခုဖြစ်သည်။ ၎င်းသည်နောင်လာမည့်စုံစမ်းမှု၏ရလဒ်အနေဖြင့်လာမည့်စုံစမ်းမှုအစုအဝေးကိုခုန်ချသည်။
အချို့ကိစ္စများတွင် Next_result () ကို လေ့လာသူစနစ်နှင့် တွဲဖက်. အသုံးပြုနိုင်သည်။ Observationer Mode သည်အရာဝတ်ထုတစ်ခု၏ပြည်နယ်ပြောင်းလဲမှုကို၎င်းအပေါ်မူတည်သည့်အရာဝတ်ထုအားလုံးကိုအလိုအလျောက်အကြောင်းကြားရန်အလိုအလျောက်အသိပေးသည်။ စုံစမ်းမှုအသစ်ပြုပြင်ခြင်းတွင်ရလဒ်ရှာဖွေမှုအပြောင်းအလဲများပြောင်းလဲသည့်အခါတိုင်းအသစ်ပြောင်းရန်လိုအပ်သည့်အခြားအစိတ်အပိုင်းများရှိနေသည်ဟုဆိုပါစို့။
ဥပမာအားဖြင့်ဒေတာဘေ့စ်စုံစမ်းမှု၏ရလဒ်များကိုရှေ့တန်းစာမျက်နှာသို့ပြောင်းလဲရန်လိုအပ်သည့်ဇာတ်လမ်းတစ်ပုဒ်ကိုစဉ်းစားပါ။ VANT_RESELT () ဟုခေါ်သည့်အခါရှေ့တွင်စာမျက်နှာကိုမွမ်းမံမှုများအတွက်အကြောင်းကြားသည့်အခါတိုင်းရိုးရှင်းသောလေ့လာသူပုံစံကိုကျွန်ုပ်တို့အကောင်အထည်ဖော်နိုင်သည်။
class QueryObserver {
public function update($result) {
echo "New result set available:<br>";
foreach ($result as $row) {
echo $row['name'] . "<br>";
}
}
}
class QueryHandler {
private $observers = [];
public function addObserver($observer) {
$this->observers[] = $observer;
}
public function removeObserver($observer) {
$this->observers = array_filter($this->observers, function($obs) use ($observer) {
return $obs !== $observer;
});
}
public function notifyObservers($result) {
foreach ($this->observers as $observer) {
$observer->update($result);
}
}
public function processQuery($conn) {
mysqli_multi_query($conn, "SELECT * FROM users; SELECT * FROM products;");
do {
if ($result = mysqli_store_result($conn)) {
$this->notifyObservers($result);
mysqli_free_result($result);
}
} while (mysqli_next_result($conn));
}
}
$observer = new QueryObserver();
$queryHandler = new QueryHandler();
$queryHandler->addObserver($observer);
$queryHandler->processQuery($conn);
ဒီဥပမာမှာ Next_result () ကိုခေါ်တဲ့အချိန်တွေတစ်ခုစီကိုခေါ်တဲ့အချိန်တိုင်းမှာအသိပေးချက်ကိုအစပျိုးပေးပြီးလေ့လာသူကရလဒ်ကိုရရှိသည်။
မူဝါဒပုံစံတစ်ခုသည် algorithms ၏စီးရီးကိုသတ်မှတ်ရန်နှင့် algorithm တစ်ခုချင်းစီကိုသူတို့တစ် ဦး ချင်းစီကတခြားအစားထိုးနိုင်အောင် algorithm တစ်ခုစီကို encapsate လုပ်ဖို့ဖြစ်တယ်။ The Next_result () function သည်အထူးသဖြင့်ကွဲပြားခြားနားသောမေးမြန်းချက်များကိုကိုင်တွယ်သည့်အခါမူဝါဒပုံစံကိုထင်ဟပ်နိုင်သည်။ ကွဲပြားခြားနားသောစုံစမ်းမှုမဟာဗျူဟာများအရကွဲပြားခြားနားသောအပြောင်းအလဲနဲ့နည်းလမ်းများကိုရွေးချယ်နိုင်သည်။
ဥပမာအားဖြင့်, စုံစမ်းမှုရလဒ်များအပေါ် အခြေခံ. ရလဒ် set ကိုမည်သို့လုပ်ဆောင်ရမည်ကိုကျွန်ုပ်တို့ဆုံးဖြတ်သည်ဆိုပါစို့။ ဤတွင်မူဝါဒပုံစံကိုရိုးရှင်းသောအကောင်အထည်ဖော်မှုတစ်ခုဖြစ်သည်။
interface ResultStrategy {
public function process($result);
}
class UserResultStrategy implements ResultStrategy {
public function process($result) {
echo "Processing user result:<br>";
foreach ($result as $row) {
echo $row['username'] . "<br>";
}
}
}
class ProductResultStrategy implements ResultStrategy {
public function process($result) {
echo "Processing product result:<br>";
foreach ($result as $row) {
echo $row['product_name'] . "<br>";
}
}
}
class QueryProcessor {
private $strategy;
public function setStrategy(ResultStrategy $strategy) {
$this->strategy = $strategy;
}
public function process($conn) {
mysqli_multi_query($conn, "SELECT * FROM users; SELECT * FROM products;");
do {
if ($result = mysqli_store_result($conn)) {
$this->strategy->process($result);
mysqli_free_result($result);
}
} while (mysqli_next_result($conn));
}
}
$queryProcessor = new QueryProcessor();
$queryProcessor->setStrategy(new UserResultStrategy());
$queryProcessor->process($conn);
$queryProcessor->setStrategy(new ProductResultStrategy());
$queryProcessor->process($conn);
ဤကုဒ်တွင် Next_Result () သည် မူဝါဒပုံစံကိုပေါင်းစပ်ပြီးစုံစမ်းမှုရလဒ်တစ်ခုစီအတွက်မတူညီသောထုတ်လုပ်မှုနည်းဗျူဟာများကိုသတ်မှတ်ရန်ခွင့်ပြုသည်။
Singleton ပုံစံသည်အတန်းတစ်ခုတွင်သာဓကတစ်ခုသာရှိသည်။ ဒေတာဘေ့စ်စုံစမ်းမှုတွင်ဒေတာဘေ့စ်ဆက်သွယ်မှုအရာဝတ်ထုများကိုစီမံရန် Singleton ပုံစံကိုသုံးနိုင်သည်။ Next_result () ဟုခေါ်သောအခါတိုင်းဒေတာဘေ့စ်ဆက်သွယ်မှုကိုသာအသုံးပြုသည်။
class Database {
private static $instance;
private $connection;
private function __construct() {
$this->connection = mysqli_connect("localhost", "user", "password", "database");
}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new Database();
}
return self::$instance;
}
public function getConnection() {
return $this->connection;
}
}
// Singleton Mode ကို သုံး. ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုရယူပါ
$db = Database::getInstance();
$conn = $db->getConnection();
$sql = "SELECT * FROM users; SELECT * FROM products;";
mysqli_multi_query($conn, $sql);
do {
if ($result = mysqli_store_result($conn)) {
while ($row = mysqli_fetch_assoc($result)) {
echo $row['name'] . "<br>";
}
mysqli_free_result($result);
}
} while (mysqli_next_result($conn));
ဤဥပမာတွင် Singleton Mode မှတစ်ဆင့်ဒေတာဘေ့စ်ဆက်သွယ်မှုကိုတစ်ကြိမ်သာဖန်တီးပြီးအမြဲတမ်းတူညီသောဥပမာအားဖြင့်သာဖြစ်ပါသည်။
Next_result () function သည်ဒေတာဘေ့စ်မေးမြန်းချက်များတွင်အရေးပါသောအခန်းကဏ် plays မှပါ 0 င်သည်။ developer များလုပ်ငန်းများကိုအထောက်အကူပြုရုံသာမကစုံစမ်းမှုရလဒ်မျိုးစုံမျိုးစုံကိုအထောက်အကူပြုရုံသာမကလက်တွေ့ကျသောအသုံးချမှုများတွင်ဘုံဒီဇိုင်းပုံစံများကိုရောင်ပြန်ဟပ်သည်။ ဤဒီဇိုင်းပုံစံများကိုအမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုသို့ကျင့်သုံးခြင်းအားဖြင့် developer များသည်သူတို့၏ကုဒ်၏ထိန်းသိမ်းနိုင်မှု,