Latest web development tutorials
×

PHP หลักสูตร

PHP หลักสูตร PHP แนะนำโดยย่อ PHP ติดตั้ง PHP ไวยากรณ์ PHP ตัวแปร PHP echo/print PHP ชนิดข้อมูล PHP คงที่ PHP เชือก PHP ผู้ประกอบการ PHP If...Else PHP Switch PHP แถว PHP เรียงลำดับอาร์เรย์ PHP Superglobals PHP While การไหลเวียน PHP For การไหลเวียน PHP ฟังก์ชัน PHP ตัวแปรเมจิก PHP namespaces PHP เชิงวัตถุ

PHP ฟอร์ม

PHP ฟอร์ม PHP รูปแบบการตรวจสอบสิทธิ์ PHP ฟอร์ม - ฟิลด์ที่จำเป็น PHP ฟอร์ม - อีเมลยืนยันและ URL PHP ตัวอย่างสมบูรณ์แบบ PHP $_GET ตัวแปร PHP $_POST ตัวแปร

PHP การสอนที่ทันสมัย

PHP อาร์เรย์หลายมิติ PHP วันที่ PHP บรรจุ PHP ไฟล์ PHP อัปโหลดไฟล์ PHP Cookie PHP Session PHP E-mail PHP ความปลอดภัย E-mail PHP Error PHP Exception PHP กรอง PHP กรองขั้นสูง PHP JSON

PHP 7 คุณสมบัติใหม่

PHP 7 คุณสมบัติใหม่

PHP ฐานข้อมูล

PHP MySQL แนะนำโดยย่อ PHP MySQL สัมพันธ์ PHP MySQL การสร้างฐานข้อมูล PHP MySQL สร้างตารางข้อมูล PHP MySQL แทรกข้อมูล PHP MySQL ใส่ข้อมูลหลาย PHP MySQL งบเตรียม PHP MySQL อ่านข้อมูล PHP MySQL WHERE PHP MySQL ORDER BY PHP MySQL UPDATE PHP MySQL DELETE PHP ODBC

PHP XML

XML Expat Parser XML DOM XML SimpleXML

PHP & AJAX

AJAX แนะนำโดยย่อ AJAX PHP AJAX ฐานข้อมูล AJAX XML AJAX ค้นหาแบบ Real-time AJAX RSS Reader AJAX โหวต

PHP คู่มืออ้างอิง

PHP Array PHP Calendar PHP cURL PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP PDO PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones PHP การประมวลผลภาพ PHP RESTful

PHP PDO กิจการและอัตโนมัติกระทำ

คู่มือการใช้งาน PHP PDO อ้างอิง คู่มือการใช้งาน PHP PDO อ้างอิง

ตอนนี้เชื่อมต่อผ่าน PDO ไปในก่อนการเริ่มต้นของแบบสอบถามก่อนอื่นคุณต้องเข้าใจวิธีการ PDO คือการจัดการกิจการ

สนับสนุนการทำธุรกรรมคุณสมบัติสี่ (Acid):

  • อะตอมมิกซิตี้ (อะตอมมิกซิตี้)
  • ความสอดคล้อง (Consistency)
  • การแยก (แยก)
  • ถาวร (Durability)

อีกเพียงดำเนินการใด ๆ ดำเนินการในการทำธุรกรรมแม้จะค่อย ๆ ดำเนินการ แต่ยังให้การรับประกันความปลอดภัยที่ใช้กับฐานข้อมูลและจะไม่ถูกส่งในเวลาการรบกวนจากการเชื่อมต่ออื่น ๆ

การดำเนินงานการทำธุรกรรมยังสามารถเพิกถอนได้โดยอัตโนมัติเมื่อมีการร้องขอ (สมมติว่ายังไม่ได้ส่ง) ซึ่งทำให้ง่ายต่อการจัดการข้อผิดพลาดในสคริปต์

การทำธุรกรรมที่มักจะทำโดยจำนวนของการเปลี่ยนแปลง "เงินฝากออมทรัพย์" ขึ้นและได้รับอนุญาตแล้วจะมีผลบังคับใช้และดำเนินการ; ประโยชน์ของการทำเช่นนั้นคือการให้มีประสิทธิภาพเหล่านี้สามารถเปลี่ยนแปลงอย่างมาก

ในคำอื่น ๆ การทำธุรกรรมสามารถทำสคริปต์ของคุณได้เร็วขึ้นและมีประสิทธิภาพมากขึ้นที่อาจเกิดขึ้น (คุณยังคงต้องใช้พวกเขาอย่างถูกต้องที่จะเก็บเกี่ยวผลประโยชน์ดังกล่าว)

แต่น่าเสียดายที่ไม่ได้เป็นฐานข้อมูลทุกสนับสนุนธุรกรรมดังนั้นเมื่อคุณแรกเปิดการเชื่อมต่อ, PDO ต้องเรียกว่าโหมดการทำงาน "กระทำอัตโนมัติ"

อัตโนมัติกระทำโหมดหมายความว่าถ้าสนับสนุนฐานข้อมูลแต่ละเรียกใช้แบบสอบถามที่มีการทำธุรกรรมโดยนัยของตัวเองถ้าฐานข้อมูลไม่สนับสนุนการทำธุรกรรมไม่

หากคุณต้องการทำธุรกรรมคุณต้องใช้ PDO :: beginTransaction () วิธีการที่จะเริ่มต้น ถ้าโปรแกรมควบคุมพื้นฐานไม่สนับสนุนการทำธุรกรรมโยน PDOException ข้อยกเว้น (ไม่คำนึงถึงสิ่งที่ชนิดของการตั้งค่าการจัดการข้อผิดพลาดนี้เป็นเงื่อนไขข้อผิดพลาดร้ายแรง)

เมื่อทำธุรกรรมที่มีอยู่ PDO :: กระทำ () หรือ PDO :: ย้อนกลับ () เพื่อดำเนินการขึ้นอยู่กับรหัสการทำธุรกรรมจะทำงานประสบความสำเร็จ

หมายเหตุ: PDO เท่านั้นไม่ว่าจะเป็นความสามารถในการประมวลผลธุรกรรมในการตรวจสอบชั้นขับรถ หากบางส่วนสภาพ Runtime หมายความว่าการทำธุรกรรมไม่สามารถใช้ได้และบริการฐานข้อมูลยอมรับการร้องขอที่จะเริ่มต้นการทำธุรกรรม, PDO :: beginTransaction () จะยังคงส่งกลับ TRUE และไม่มีข้อผิดพลาด ลองใช้การทำธุรกรรมที่เป็นตัวอย่างที่ดีในตารางฐานข้อมูล MySQL MyISAM

เมื่อสคริปต์สิ้นสุดหรือการเชื่อมต่อเป็นเรื่องเกี่ยวกับที่จะปิดถ้าไม่มีการทำธุรกรรมเสร็จสมบูรณ์ PDO จะย้อนกลับโดยอัตโนมัติการทำธุรกรรม มาตรการรักษาความปลอดภัยนี้จะช่วยหลีกเลี่ยงความไม่สอดคล้องกันในสคริปต์ยุติโดยไม่คาดคิด - ถ้าไม่ชัดเจนกระทำธุรกรรมแล้วสมมติฐานที่ไม่ถูกต้องอยู่ที่ไหนสักแห่งเพื่อย้อนกลับจะดำเนินการเพื่อให้แน่ใจว่าการรักษาความปลอดภัยข้อมูล

หมายเหตุ: เฉพาะเริ่มต้นการทำธุรกรรม PDO :: beginTransaction () ต่อมามันอาจจะเกิดขึ้นโดยอัตโนมัติรีดกลับ ถ้าคุณออกแบบสอบถามเพื่อเริ่มต้นการทำธุรกรรมที่ PDO ไม่สามารถรู้เพื่อที่ว่าถ้ามีความจำเป็นไม่สามารถย้อนกลับ

ในการทำธุรกรรมการดำเนิน Batch:

ในตัวอย่างต่อไปสมมติว่าคุณสร้างชุดของรายการสำหรับพนักงานใหม่ให้กำหนดหมายเลข 23 คือ นอกเหนือไปจากข้อมูลพื้นฐานการลงทะเบียนคน แต่คุณยังต้องบันทึกเงินเดือนของเขา

การปรับปรุงทั้งสองจะเสร็จสมบูรณ์มันเป็นเรื่องง่ายมาก แต่โดยวิธีปิด PDO :: beginTransaction () และ PDO :: กระทำการโทร () ก็เป็นไปได้เพื่อให้มั่นใจว่าก่อนการเปลี่ยนแปลงที่คนอื่นไม่สามารถเห็นการเปลี่ยนแปลงเหล่านี้

หากมีข้อผิดพลาดเกิดขึ้นจับป้องกันการเปลี่ยนแปลงทั้งหมดตั้งแต่การทำธุรกรรมที่ถูกรีดกลับมาจากการเริ่มต้นและแสดงข้อความแสดงข้อผิดพลาด

<?php
try {
  $dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2', 
      array(PDO::ATTR_PERSISTENT => true));
  echo "Connected\n";
} catch (Exception $e) {
  die("Unable to connect: " . $e->getMessage());
}

try {  
  $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $dbh->beginTransaction();
  $dbh->exec("insert into staff (id, first, last) values (23, 'Joe', 'Bloggs')");
  $dbh->exec("insert into salarychange (id, amount, changedate) 
      values (23, 50000, NOW())");
  $dbh->commit();
  
} catch (Exception $e) {
  $dbh->rollBack();
  echo "Failed: " . $e->getMessage();
}
?>

ไม่ได้ จำกัด อยู่กับการเปลี่ยนแปลงในการทำธุรกรรมก็สามารถออกคำสั่งที่ซับซ้อนในการดึงข้อมูล แต่ยังจะสร้างการเปลี่ยนแปลงมากขึ้นและแบบสอบถามโดยใช้ข้อมูลที่มิเมื่อการทำธุรกรรมที่มีการใช้งานคุณสามารถมั่นใจได้ว่าคนอื่น ๆ ไม่สามารถทำให้เกิดการเปลี่ยนแปลงในการดำเนินงานในความคืบหน้า


คู่มือการใช้งาน PHP PDO อ้างอิง คู่มือการใช้งาน PHP PDO อ้างอิง