PHP ၏ PDO (PHP Data Obserts) ကိုဒေတာဘေ့စ်လုပ်ငန်းများအတွက်အသုံးပြုသည့်အခါ PDO :: အမှားအယွင်းများ () errorcode () Method သည် '000000' ကိုပြန်ပို့ခြင်းမရှိကြောင်းညွှန်ပြရန် '000000' ကိုပြန်ပို့သည်။ ဆိုလိုသည်မှာဒေ တာ ဘေ့စ်၏စစ်ဆင်ရေးသည်အောင်မြင်စွာပြီးဆုံးကြောင်းဆိုလိုသည်မှာ ,
ဤဆောင်းပါးသည်အဘယ်ကြောင့် PDO :: errorcode () 000000 '' 000000 ' ကိုအဘယ်ကြောင့်ပြန်ပို့သည်ကိုအသေးစိတ်ရှင်းပြပါလိမ့်မည်။
'00000' 00000 ကို PDO :: errorcode () errorcode () သည် "အမှားအယွင်းများ" ဟုအဓိပ္ပာယ်ရသော SQLSTATE standard code တစ်ခုဖြစ်သည်။ Syntax အမှားများ, ဆက်သွယ်မှုပြတ်တောက်ခြင်းစသည့်ဒေတာဘေ့စ်ဆက်သွယ်ရေးလုပ်ငန်းစဉ်အတွင်းအမှားအယွင်းများရှိ,
သို့သော်အချို့သောကိစ္စရပ်များတွင် SQL ကြေငြာချက်ကိုကွပ်မျက်ခံရခြင်းနှင့်အမှားအယွင်းမရှိလျှင်ပင်အမှားအယွင်း မရှိလျှင် '000000' ကို ပြန်လည်ရောက်ရှိဆဲဖြစ်သော်လည်းစစ်ဆင်ရေးရလဒ်သည်စံနမူနာရှင်မဟုတ်ပေ။ ဥပမာအားဖြင့်:
အသစ်ပြောင်းခြင်း ကြေညာချက်ကိုကွပ်မျက်ခံရသော်လည်းမည်သည့်အတန်းကိုမျှမပြုပြင်ခဲ့ကြပါ (မည်သည့်မှတ်တမ်းသည်မည်သည့်မှတ်တမ်းနှင့်မကိုက်ညီသောကြောင့်)
Delete ကြေညာချက်ကိုကွပ်မျက်ခံရသော်လည်းမည်သည့်လိုင်းမျှမဖျက်ခံခဲ့ရပါ။
Insert ထုတ်ပြန်ချက်သည်ကွပ်မျက်ခံရသော်လည်း,
ဤအခြေအနေများသည်အမှားအယွင်းများကိုဖြစ်ပေါ်စေသည်မဟုတ်သော်လည်းစီးပွားရေးဆိုင်ရာယုတ္တိဗေဒအတွက်လုပ်ဆောင်မှုသည်အောင်မြင်စွာအကျိုးသက်ရောက်ခြင်းမရှိပါ။
PDostatement :: Rowcount () နောက်ဆုံးကွပ်မျက်ခံရသော SQL ကြေငြာချက်ကြောင့်ထိခိုက်သောအတန်းအရေအတွက်ကိုပြန်လည်ရောက်ရှိစေသည်။ ၎င်းသည် update ကို နှင့် ဖျက်ခြင်း ရှိမရှိကိုဆုံးဖြတ်ခြင်းအတွက်အရေးကြီးသောအခြေခံဖြစ်သည်။
<?php
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
$sql = "UPDATE users SET status = 1 WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute([':id' => 123]);
if ($stmt->errorCode() === '00000') {
$affectedRows = $stmt->rowCount();
if ($affectedRows > 0) {
echo "အောင်မြင်စွာအသစ်ပြောင်းခြင်း,ဒါဟာထိခိုက်ခဲ့သည် {$affectedRows} အိုကေ。";
} else {
echo "执အိုကေ成功,但没有အိုကေ被更新。";
}
} else {
echo "ဒေတာဘေ့စ်စစ်ဆင်ရေးတွင်အမှားတစ်ခုဖြစ်ပွားခဲ့သည်,အမှားကုဒ်:" . $stmt->errorCode();
}
?>
ဤနေရာတွင် errorcode () သည် '000000' ဖြစ်သော်လည်း Rowcount () သုညထက် သာ. ကြီးသည်ဟုသာလျှင်အမှန်တကယ်ပြုပြင်မွမ်းမံရန်စဉ်းစားသည်။
AutoOncrement Primary Key ၏သွင်းသွင်းခြင်းလုပ်ငန်းစဉ်အတွက် Inserted Record ID ကို PDO :: Lastinstid () မှတဆင့်ရယူနိုင်သည်။ အချည်းနှီးသောနှင့်ကျိုးကြောင်းဆီလျော်သော ID ကိုပြန်ပို့လျှင်, သွင်းသည်အောင်မြင်သည်။
<?php
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute([':name' => 'Zhang San', ':email' => 'zhangsan@example.com']);
if ($stmt->errorCode() === '00000') {
$lastId = $pdo->lastInsertId();
if ($lastId) {
echo "အောင်မြင်စွာထည့်ပါ,အသုံးပြုသူအသစ်များIDအတွက်:{$lastId}";
} else {
echo "执အိုကေ成功,သို့သော်အသစ်သော Insert ကိုပြန်ပို့ခဲ့သည်ID。";
}
} else {
echo "ဒေတာဘေ့စ်စစ်ဆင်ရေးတွင်အမှားတစ်ခုဖြစ်ပွားခဲ့သည်,အမှားကုဒ်:" . $stmt->errorCode();
}
?>
သတိပြုရမည်မှာ taleslesertid ၏အဓိကသော့ချက်သည်ဒေတာဘေ့စ်စားပွဲပေါ်တွင်မူတည်ကြောင်းသတိပြုပါ။
မျိုးစုံလုပ်ဆောင်မှုများသို့မဟုတ်ရှုပ်ထွေးသောလုပ်ငန်းများကိုလုပ်ဆောင်သောအခါအရောင်းအ 0 ယ်များကိုလှည့်ခြင်းနှင့်ခြွင်းချက်များကိုဖမ်းယူခြင်းနှင့်ခြွင်းချက်များကိုဖမ်းယူခြင်းသည်လည်ပတ်မှုအနုမြူဗုံးကိုသေချာစေရန်အလုံခြုံဆုံးနည်းလမ်းဖြစ်သည်။
<?php
try {
$pdo = new PDO('mysql:host=m66.net;dbname=testdb;charset=utf8', 'username', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->beginTransaction();
$sql1 = "UPDATE accounts SET balance = balance - 100 WHERE user_id = :user_id";
$stmt1 = $pdo->prepare($sql1);
$stmt1->execute([':user_id' => 1]);
if ($stmt1->rowCount() === 0) {
throw new Exception("အကောင့်နှုတ်ယူခြင်းမအောင်မြင်ပါ,无受影响အိုကေ数");
}
$sql2 = "UPDATE accounts SET balance = balance + 100 WHERE user_id = :user_id";
$stmt2 = $pdo->prepare($sql2);
$stmt2->execute([':user_id' => 2]);
if ($stmt2->rowCount() === 0) {
throw new Exception("အကောင့်ဖြန့်မှုမအောင်မြင်ပါ,无受影响အိုကေ数");
}
$pdo->commit();
echo "အောင်မြင်စွာလွှဲပြောင်း";
} catch (Exception $e) {
$pdo->rollBack();
echo "စစ်ဆင်ရေးပျက်ကွက်,အကေြာင်းရင်း:" . $e->getMessage();
}
?>
ဤနေရာတွင်မည်သည့်စစ်ဆင်ရေးမမှန်ကန်ပါက, ချွင်းချက်တစ်ခုဖြစ်ပြီးငွေပေးချေမှုကိုပြန်လှိမ့်ချိန်တွင်အချက်အလက်မကိုက်ညီပါ။
PDO :: အမှားအယွင်းများကိုမဖော်ပြရန် '000000' ကိုပြန်ပို့သည်။ သို့သော်စစ်ဆင်ရေးသည်အမှန်တကယ်အကျိုးသက်ရောက်မှုရှိသည်ဟုမဆိုလိုပါ။
PDostatement :: Rowcount () ကို ဖြည့်ဆည်းပေးနိုင်သည့် Rowcount () ကိုဆုံးဖြတ်ရန်ပြုပြင်မွမ်းမံခြင်းလုပ်ငန်းသည်အမှန်တကယ်ထိရောက်မှုရှိ, မရှိကိုဆုံးဖြတ်ရန်သော့ချက်ဖြစ်သည်။
သွင်းယူခြင်းအတွက် PDO :: Lastinserinsertid () ကိုထည့်သွင်းရန်အောင်မြင်မှုရှိ, မရှိ,
ဒေတာစစ်ဆင်ရေး၏သမာဓိနှင့်တိကျမှန်ကန်မှုကိုသေချာစေရန်အတွက်ငွေသွင်းငွေထုတ်ခြင်းနှင့်ခြွင်းချက်များကိုအသုံးပြုရန်အကြံပြုသည်။
အထက်ပါနည်းလမ်းများမှတစ်ဆင့်ဒေတာဘေ့စ်စစ်ဆင်ရေးသည်အမှန်တကယ်အောင်မြင်မှုရှိမရှိကိုကျွန်ုပ်တို့ပိုမိုတိကျစွာဆုံးဖြတ်နိုင်သည် ။