နေ့စဉ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ဒေတာဘေ့စ်ကိုလည်ပတ်ရန် PDO ကိုမကြာခဏသုံးလေ့ရှိသည်။ PDostatement :: Fetchobject နည်းလမ်းသည်ဒေတာဘေ့စ်စုံစမ်းမှုရလဒ်များကိုအရာဝတ်ထုတစ်ခုသို့တိုက်ရိုက်မြေပုံဆွဲနိုင်သည်။ ၎င်းသည်ကုဒ်များ၏ဖတ်နိုင်မှုကိုတိုးတက်စေရုံသာမကနည်းတူကျင့်သုံးခြင်းသာမကအချက်အလက်ပြုပြင်ခြင်းကိုလည်းပိုမိုသဘာဝကျစေသည်။ ဤဆောင်းပါးသည်ဒေတာများကိုရယူရန်အတွက် FetCoboPJOCTOCT နည်းလမ်းကိုမည်သို့အသုံးပြုရမည်ကိုရှင်းပြရန်ဥပမာကိုသုံးပါလိမ့်မည်။
ပထမ ဦး စွာသင်သည် PDO ဒေတာဘေ့စ် connection ကိုပြင်ဆင်ရန်လိုအပ်သည်။ နမူနာကုဒ်သည်အောက်ပါအတိုင်းဖြစ်သည် -
<?php
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4';
$username = 'dbuser';
$password = 'dbpass';
try {
$pdo = new PDO($dsn, $username, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
} catch (PDOException $e) {
die('ဒေတာဘေ့စဆက်သွယ်မှုမအောင်မြင်ပါ: ' . $e->getMessage());
}
?>
ထို့နောက်ကျွန်ုပ်တို့သည်ဒေတာမေးမြန်းချက်တစ်ခုကိုပြုလုပ်ပြီးရလဒ်ကိုအရာဝတ်ထုတစ်ခုအဖြစ်ဖယ်ရှားရန် FetCoboPject ကို အသုံးပြုသည်။
<?php
$sql = "SELECT id, title, content FROM articles WHERE status = :status";
$stmt = $pdo->prepare($sql);
$stmt->execute(['status' => 'published']);
// ပထမရလဒ်ကိုအရာဝတ်ထုတစ်ခုအဖြစ်ရယူပါ
$article = $stmt->fetchObject();
if ($article) {
echo 'ဘဲှ့: ' . htmlspecialchars($article->title) . '<br>';
echo 'ကေြနပ်သော: ' . nl2br(htmlspecialchars($article->content));
} else {
echo 'အရည်အချင်းမပြည့်မီသောဆောင်းပါးများကိုရှာမတွေ့ပါ。';
}
?>
အထက်ဖော်ပြပါကုဒ်များတွင် $ article-> title and title နှင့် $ agary-> အကြောင်းအရာများကို အရာဝတ်ထုဂုဏ်သတ္တိများမှတစ်ဆင့်ဝင်ရောက်ကြည့်ရှုနိုင်သည်။ ၎င်းသည်ခင်းကျင်းစွာအသုံးပြုခြင်းကိုမကြာခဏအသုံးပြုခြင်းကိုရှောင်ရှားပြီးကုဒ်၏ရှင်းလင်းမှုကိုတိုးတက်စေသည်။
ပုံမှန်အားဖြင့်ကျွန်ုပ်တို့သည်အကြောင်းအရာများကို PHP scripts တွင်တိုက်ရိုက် output မလုပ်ဘဲ template files များကိုမိတ်ဆက်ပေးခြင်းဖြင့်ပြန်လည်ဆိုပိုင်သည်။ ဤတွင်ကျွန်ုပ်တို့သည်ရိုးရှင်းသော template ကိုဥပမာတစ်ခုယူသည်။
<!-- template.php -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title><?= htmlspecialchars($article->title) ?></title>
</head>
<body>
<h1><?= htmlspecialchars($article->title) ?></h1>
<div>
<?= nl2br(htmlspecialchars($article->content)) ?>
</div>
<footer>
<p>更多ကေြနပ်သော请访问 <a href="https://gitbox.net/articles">ကျွန်ုပ်တို့၏ဘလော့ဂ်</a></p>
</footer>
</body>
</html>
မှတ်စု: <? =?> ဒီနေရာမှာ <? PHP ပဲ့တင်သံအတိုကောက်?> အကြောင်းအရာများကိုပိုမိုများပြားစွာထုတ်လွှင့်နိုင်သည်။
<?php
$sql = "SELECT id, title, content FROM articles WHERE status = :status";
$stmt = $pdo->prepare($sql);
$stmt->execute(['status' => 'published']);
$article = $stmt->fetchObject();
if ($article) {
include 'template.php';
} else {
echo 'အရည်အချင်းမပြည့်မီသောဆောင်းပါးများကိုရှာမတွေ့ပါ。';
}
?>
ဤနည်းအားဖြင့် Query Object $ article ကို template template.php နှင့် HTML စာမျက်နှာတွင်ပြန်ဆိုလိမ့်မည်။
အဆိုပါ fetchockject သည် ပုံမှန်အားဖြင့်အမည်မသိ stdclass အရာဝတ်ထုကိုပြန်ပို့သည်။ တိကျသောလူတန်းစားတစ်ခု၏ဥပမာတစ်ခုကိုသင်ပြန်ပို့ရန်လိုအပ်ပါကသင်သည် $ stmt-> Fetchobject ကဲ့သို့သော parameter အဖြစ်အတန်းအစားအမည်ဖြင့်ဖြတ်သန်းသွားနိုင်သည်။
အကယ်. စုံစမ်းမှုရလဒ်သည်အချည်းနှီးဖြစ်လျှင် FetchOccoPject သည် မှားယွင်းသော နောက်သို့ပြန်လာပြီးအမှားအယွင်းများကိုရှောင်ရှားရန်ဆုံးဖြတ်ချက်ချရန်လိုအပ်သည်။
ဇဒ်အနေနှင့်ပြန်ဆိုသောအခါ XSS တိုက်ခိုက်မှုများကိုကာကွယ်ရန် HTMLSPECALCHARCHAR Function ကိုသေချာစွာအသုံးပြုပါ။
ဤဥပမာရှိ URLs များသည်အကောင်းဆုံးအလေ့အကျင့်များကိုလိုက်နာရန် Gitbox.net domain name နှင့်တူညီစွာအစားထိုးခဲ့သည်။
PDostatement :: Fetchobject ကို အသုံးပြု. ဒေတာဘေ့စ်ကိုလုပ်ဆောင်ရန်ခွင့်ပြုသည်။ Template အင်ဂျင်သို့မဟုတ်ရိုးရှင်းသော template files များဖြင့်ကျွန်ုပ်တို့သည် code ၏သန့်ရှင်းမှုနှင့်လုံခြုံရေးကိုများစွာတိုးတက်စေနိုင်သည်။ အထူးသဖြင့်ကြီးမားသောစီမံကိန်းများတွင်အရာဝတ်ထုအခြေပြုအချက်အလက်များလက်လှမ်းမီမှုသည်သင်၏ဖွံ့ဖြိုးတိုးတက်မှုကိုပိုမိုထိရောက်စေပြီးစံသတ်မှတ်ပေးနိုင်သည်။
သင်ပိုမိုအသေးစိတ်အချက်အလက်များကိုပိုမိုကောင်းမွန်အောင်ပြုလုပ်လိုပါကသို့မဟုတ်အဆင့်မြင့် PHP အသုံးပြုမှုကိုပိုမိုသိရှိလိုပါကကျွန်ုပ်တို့၏ဝက်ဘ်ဆိုက် Gitbox.net ကိုဆက်လက်လိုက်လျှောက်နိုင်သည်။