PDOStatement::closeCursor — ปิดเคอร์เซอร์เพื่อให้สามารถดำเนินการคำสั่งได้อีกครั้ง (PHP 5 >= 5.1.0, PECL pdo >= 0.9.0)
บูล PDOStatement::closeCursor ( โมฆะ )
PDOStatement::closeCursor() ปล่อยการเชื่อมต่อกับบริการฐานข้อมูลเพื่อให้สามารถออกคำสั่ง SQL อื่น ๆ ได้ แต่ปล่อยให้คำสั่งอยู่ในสถานะที่สามารถดำเนินการได้อีกครั้ง
วิธีการนี้มีประโยชน์มากสำหรับไดรเวอร์ฐานข้อมูลที่ไม่รองรับการดำเนินการออบเจ็กต์ PDOStatement อื่น เมื่อยังมีแถวที่ยังไม่ได้ดึงข้อมูลในออบเจ็กต์ PDOStatement ที่ดำเนินการครั้งล่าสุด หากโปรแกรมควบคุมฐานข้อมูลอยู่ภายใต้ข้อจำกัดนี้ อาจเกิดข้อผิดพลาดที่ไม่อยู่ในลำดับได้
PDOStatement::closeCursor() ถูกนำไปใช้เป็นวิธีทางเลือกเฉพาะไดรเวอร์ (มีประสิทธิภาพสูงสุด) หรือนำไปใช้เป็นทางเลือก PDO ทั่วไปเมื่อไม่มีฟังก์ชันเฉพาะไดรเวอร์ ซีแมนทิกส์ทางเลือกทั่วไปจะเหมือนกับโค้ด PHP ต่อไปนี้:
<?phpdo { while ($stmt->fetch()) ; if (!$stmt->nextRowset()) break;} while (จริง);?>
ส่งคืน TRUE เมื่อสำเร็จ หรือ FALSE เมื่อล้มเหลว
ในตัวอย่างต่อไปนี้ อ็อบเจ็กต์ $stmt PDOStatement ส่งคืนหลายแถว แต่แอปพลิเคชันดึงข้อมูลเฉพาะแถวแรกเท่านั้น โดยปล่อยให้อ็อบเจ็กต์ PDOStatement อยู่ในสถานะที่มีแถวที่ไม่ถูกดึงออกมา เพื่อให้แน่ใจว่าแอปพลิเคชันสามารถทำงานได้ตามปกติกับไดรเวอร์ฐานข้อมูลทั้งหมด $stmt จะเรียก PDOStatement::closeCursor() หนึ่งครั้งก่อนที่จะดำเนินการอ็อบเจ็กต์ $otherStmt PDOStatement
<?php/* สร้างวัตถุ PDOStatement */$stmt = $dbh->prepare('SELECT foo FROM bar');/* สร้างวัตถุ PDOStatement ที่สอง */$otherStmt = $dbh->prepare('SELECT foobaz FROM foobar');/* ดำเนินการคำสั่งแรก*/$stmt->execute();/* ดึงข้อมูลเฉพาะแถวแรกจากชุดผลลัพธ์ */$stmt->fetch();/* การเรียก closeCursor() ต่อไปนี้อาจจำเป็นสำหรับไดรเวอร์บางตัว */$stmt->closeCursor();/* ตอนนี้คุณสามารถดำเนินการได้แล้ว คำสั่งที่สอง*/$otherStmt->execute();?>