0 က်ဘ်အပလီကေးရှင်းများကိုတီထွင်သောအခါဒေတာဘေ့စ်စုံစမ်းမှုများစစ်ဆင်ရေးများကိုမကြာခဏသုံးလေ့ရှိသည်။ ဒေတာဘေ့စ်အပြန်အလှန်ဆက်သွယ်မှုအတွက် PHP ၏ PDO ကိုအသုံးပြုသောအခါ, အကယ်. စုံစမ်းမှုမအောင်မြင်ပါက,
အသုံးပြုသူအတွေ့အကြုံနှင့်စနစ်အားကြံ့ခိုင်မှုကိုတိုးတက်စေရန် PDOSTATESS errorcode ကို PDostatement နှင့်အတူ PDO :: အမှားအယွင်းများကိုသုံးနိုင်သည်။
ကျွန်ုပ်တို့သည်အသုံးပြုသူအချက်အလက်များကိုမေးမြန်းရန်နှင့်ဒေတာဘေ့စ်လုပ်ငန်းများကိုလုပ်ဆောင်ရန် PDO ကိုအသုံးပြုရန် function တစ်ခုကိုတီထွင်နေသည်ဆိုပါစို့။
<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'password');
$stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
$stmt->execute(['id' => $_GET['id']]);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if ($stmt->errorCode() !== '00000') {
// SQL တစ်ခုကွပ်မျက်အမှား
error_log('ဒေတာဘေ့စအမှားကုဒ်: ' . $stmt->errorCode());
echo 'စနစ်ကအလုပ်များနေတယ်,ကျေးဇူးပြု. နောက်မှထပ်ကြိုးစားပါ。';
} elseif (!$result) {
// အဆိုပါစုံစမ်းမှုအောင်မြင်ခဲ့ပေမယ့်ရလဒ်မရှိပါ
echo 'သက်ဆိုင်ရာအသုံးပြုသူအချက်အလက်ကိုမတွေ့ရှိခဲ့ပါ。';
} else {
// အဆိုပါစုံစမ်းမှုအောင်မြင်သောဖြစ်ပါတယ်နှင့်ရလဒ်များရှိပါတယ်
echo 'အသုံးပြုသူ: ' . htmlspecialchars($result['username']);
}
} ဖမ်း (PoCoException $ E) {
// catch connection အမှားအယွင်းများသို့မဟုတ် SQL syntax အမှားအယွင်းများ
error_log ('PDO ခြွင်းချက်:' ။ $ e-> gettessage ());
ECHO 'System Error ကိုဖွင့်ပြီး Administrator (M66.net) ကိုဆက်သွယ်ပါ။ '';
}
>
ခွဲခြမ်းစိတ်ဖြာခြင်းနှင့်အကောင်းမြင်
အထက်ဖော်ပြပါဥပမာတွင်ကျွန်ုပ်တို့သည်မေးမြန်းမှုရလဒ်များကိုရရန် Fetch ကို အသုံးပြုသည်။ တစ်ချိန်တည်း တွင် SQL အမှားတစ်ခုရှိ, ဤသည်အောက်ပါအားသာချက်များရှိပါတယ်:
အမှားအယွင်းများကိုခွဲခြားသတ်မှတ်ခြင်း - SQL Execution သည်မအောင်မြင်, သို့မဟုတ်ရှာဖွေမှုသည်အောင်မြင်ခဲ့ သည် ဖြစ်စေ,
သစ်ထုတ်လုပ်ခြင်းသည်အသေးစိတ်အချက်အလက်များဖြစ်သည် ။ အမှားကုဒ်များ (သို့) ခြွင်းချက်အချက်အလက်များသို့မဟုတ်ခြွင်းချက်အချက်အလက်များသည်ပြ problems နာများကိုလျင်မြန်စွာရှာဖွေနိုင်သည်။
အသုံးပြုသူမှအချက်များသည်ပိုမိုဖော်ရွေသည် - ရိုးရှင်းသော,
နောက်ထပ်ချဉ်းကပ်မှု
ကြီးမားသောစီမံကိန်းများအတွက်ယေဘူယျလုပ်ဆောင်ချက်တစ်ခုအနေဖြင့်အမှားကိုင်တွယ်မှုကို Erick လုပ်ထားရန်အကြံပြုသည်။ ဥပမာအားဖြင့်:
function handleQuery(PDOStatement $stmt) {
if ($stmt->errorCode() !== '00000') {
error_log('SQL 错误 [' . $stmt->errorCode() . ']: ' . implode(', ', $stmt->errorInfo()));
return ['error' => '数据库查询失败,请稍后重试 (m66.net)'];
}
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$result) {
return ['error' => 'သက်ဆိုင်ရာမှတ်တမ်းများမရှိပါ'];
}
return ['data' => $result];
}
ထို့နောက်ရလဒ်ကို process လုပ်ရန်ဤ function ကိုအမှန်တကယ်ကုဒ်ထဲ၌ခေါ်ဆိုပါ။
$stmt = $pdo->prepare('SELECT * FROM posts WHERE id = :id');
$stmt->execute(['id' => $postId]);
$response = handleQuery($stmt);
if (isset($response['error'])) {
echo $response['error'];
} else {
echo '文章标题: ' . htmlspecialchars($response['data']['title']);
}
အကျဉ်းချုပ်
အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင် PDO :: အမှားအယွင်းများကို ဆင်ခြင်တုံတရားအသုံးပြုခြင်းနှင့် ရယူခြင်းသည် ကျွန်ုပ်တို့အားအမှားများကိုရှာဖွေတွေ့ရှိနိုင်ပြီးဖြေရှင်းနိုင်ရန်သာမကလျှောက်လွှာ၏တည်ငြိမ်မှုနှင့်အတွေ့အကြုံကိုလည်းတိုးတက်စေသည်။ အသုံးပြုသူများအတွက်ရှင်းရှင်းလင်းလင်းနှင့်ရှင်းလင်းသောအမှား prompt သည်စာမျက်နှာတစ်ခုသို့မဟုတ်မရေမရာဖြစ်သော "အမှား" ထက် ပို. ယုံကြည်စိတ်ချရသောအမှားဖြစ်သည်။ developer များအနေဖြင့်တိကျသောအမှားအချက်အလက်များသည် debugging နှင့် optimization အတွက်သော့ချက်ဖြစ်သည်။
အတွေ့အကြုံကိုတိုးတက်အောင်လုပ်ပြီးသေးငယ်သောအသေးစိတ်အချက်အလက်များနှင့်စတင်ပါ။ "Query ပျက်ကွက်ခြင်း" ချက်ချင်းသတင်းအချက်အလက်ကိုလျစ်လျူမရှုပါနှင့်။
သက်ဆိုင်သောတက်(ဂ်)များ:
PDO
errorCode
PDOStatement