PDOStatement::fetch — รับแถวถัดไปจากชุดผลลัพธ์ (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
PDOStatement แบบผสม::fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )
รับแถวถัดไปจากชุดผลลัพธ์ที่เกี่ยวข้องกับวัตถุ PDOStatement พารามิเตอร์ fetch_style กำหนดวิธีที่ POD ส่งคืนแถว
fetch_style
ควบคุมวิธีการส่งคืนบรรทัดถัดไปไปยังผู้โทร ค่านี้จะต้องเป็นหนึ่งในชุดค่าคงที่ PDO::FETCH_* และค่าเริ่มต้นคือค่าของ PDO::ATTR_DEFAULT_FETCH_MODE (ค่าเริ่มต้นคือ PDO::FETCH_BOTH)
PDO::FETCH_ASSOC : ส่งคืนอาร์เรย์ที่จัดทำดัชนีโดยชื่อคอลัมน์ชุดผลลัพธ์
PDO::FETCH_BOTH (ค่าเริ่มต้น): ส่งกลับอาร์เรย์ที่จัดทำดัชนีโดยชื่อคอลัมน์ชุดผลลัพธ์และหมายเลขคอลัมน์ที่เริ่มต้นด้วย 0
PDO::FETCH_BOUND : ส่งคืนค่า TRUE
และกำหนดค่าคอลัมน์ในชุดผลลัพธ์ให้กับตัวแปร PHP ที่ผูกไว้ด้วยเมธอด PDOStatement::bindColumn()
PDO::FETCH_CLASS : ส่งคืนอินสแตนซ์ใหม่ของคลาสที่ร้องขอ โดยแมปชื่อคอลัมน์ในชุดผลลัพธ์กับชื่อแอตทริบิวต์ที่สอดคล้องกันในคลาส หาก fetch_style
มี PDO::FETCH_CLASSTYPE (เช่น PDO::FETCH_CLASS | PDO::FETCH_CLASSTYPE ) ชื่อคลาสจะถูกกำหนดโดยค่าของคอลัมน์แรก
PDO::FETCH_INTO : อัปเดตอินสแตนซ์ที่มีอยู่ของคลาสที่ร้องขอ โดยจับคู่คอลัมน์ในชุดผลลัพธ์กับแอตทริบิวต์ที่มีชื่อในคลาส
PDO::FETCH_LAZY : ใช้ PDO::FETCH_BOTH และ PDO::FETCH_OBJ ร่วมกันเพื่อสร้างชื่อตัวแปรวัตถุสำหรับการเข้าถึง
PDO::FETCH_NUM : ส่งคืนอาร์เรย์ที่จัดทำดัชนีเป็นหมายเลขคอลัมน์ชุดผลลัพธ์ที่เริ่มต้นด้วย 0
PDO::FETCH_OBJ : ส่งคืนวัตถุที่ไม่ระบุชื่อซึ่งมีชื่อแอตทริบิวต์ที่สอดคล้องกับชื่อคอลัมน์ของชุดผลลัพธ์
cursor_orientation สำหรับเคอร์เซอร์แบบเลื่อนที่แสดงโดยวัตถุ PDOStatement ค่านี้จะกำหนดว่าแถวใดจะถูกส่งกลับไปยังผู้เรียก ค่านี้จะต้องเป็นหนึ่งในชุดค่าคงที่ PDO::FETCH_ORI_* และค่าเริ่มต้นคือ PDO::FETCH_ORI_NEXT เพื่อให้วัตถุ PDOStatement ใช้เคอร์เซอร์แบบเลื่อนได้ คุณต้องตั้งค่าแอตทริบิวต์ PDO::ATTR_CURSOR เป็น PDO::CURSOR_SCROLL เมื่อใช้ PDO::prepare() เพื่อเตรียมคำสั่ง SQL
offsetสำหรับ เคอร์เซอร์แบบเลื่อนที่แสดงโดยวัตถุ PDOStatement โดยมีพารามิเตอร์ cursor_orientation ตั้งค่าเป็น PDO::FETCH_ORI_ABS ค่านี้จะระบุหมายเลขแถวสัมบูรณ์ของแถวในชุดผลลัพธ์ที่จะดึงข้อมูล สำหรับเคอร์เซอร์แบบเลื่อนที่แสดงโดยวัตถุ PDOStatement โดยมีพารามิเตอร์ cursor_orientation ตั้งค่าเป็น PDO::FETCH_ORI_REL ค่านี้จะระบุตำแหน่งของแถวที่จะดึงข้อมูลโดยสัมพันธ์กับเคอร์เซอร์ก่อนที่จะเรียก PDOStatement::fetch()
ค่าที่ส่งคืนโดยฟังก์ชันนี้ (วิธีการ) เมื่อสำเร็จจะขึ้นอยู่กับประเภทการแยกข้อมูล ในทุกกรณี ความล้มเหลวจะคืนค่า FALSE
<?php$sth = $dbh->prepare("เลือกชื่อ, สีจากผลไม้");$sth->execute();/* ใช้ PDOStatement::fetch style*/print("PDO::FETCH_ASSOC: ") ;print("ส่งคืนแถวถัดไปเป็นอาร์เรย์ที่จัดทำดัชนีตามชื่อคอลัมน์n");$result = $sth->fetch(PDO::FETCH_ASSOC);print_r($result);print("n");print("PDO::FETCH_BOTH: ");print("ส่งคืนแถวถัดไปเป็นอาร์เรย์ที่จัดทำดัชนีโดยทั้งสองคอลัมน์ ชื่อและหมายเลขn");$result = $sth->fetch(PDO::FETCH_BOTH);print_r($result);print("n");print("PDO::FETCH_LAZY: ");print("ส่งคืนแถวถัดไปเป็นวัตถุนิรนามพร้อมชื่อคอลัมน์ เป็นคุณสมบัติn");$result = $sth->fetch(PDO::FETCH_LAZY);print_r($result);print("n");print("PDO::FETCH_OBJ: ");print("ส่งคืนแถวถัดไปเป็นวัตถุนิรนามพร้อมชื่อคอลัมน์ เป็นคุณสมบัติn");$result = $sth->fetch(PDO::FETCH_OBJ);พิมพ์ $result->NAME;print("n");?>
ตัวอย่างข้างต้นจะแสดงผล:
PDO::FETCH_ASSOC: ส่งคืนแถวถัดไปเป็นอาร์เรย์ที่จัดทำดัชนีโดยคอลัมน์ nameArray( [NAME] => apple [COLOUR] => red)PDO::FETCH_BOTH: ส่งคืนแถวถัดไปเป็นอาร์เรย์ที่จัดทำดัชนีโดยทั้งชื่อคอลัมน์และ numberArray( [NAME ] => Banana [0] => Banana [COLOUR] => สีเหลือง [1] => สีเหลือง)PDO::FETCH_LAZY: กลับแถวถัดไปเป็นวัตถุที่ไม่ระบุชื่อด้วย ชื่อคอลัมน์เป็น propertiesPDORow Object( [NAME] => สีส้ม [COLOUR] => orange)PDO::FETCH_OBJ: ส่งคืนแถวถัดไปเป็นวัตถุที่ไม่ระบุตัวตนโดยมีชื่อคอลัมน์เป็น propertieskiwi
<?phpfunction readDataForwards($dbh) { $sql = 'เลือกมือ, ชนะ, เดิมพันจาก mynumbers ORDER BY BET'; ลอง { $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO: :CURSOR_SCROLL)); $stmt->execute(); ในขณะที่ ($row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) { $data = $row[0] . n"; print $data; } $stmt = null; } catch (PDOException $e) { print $e->getMessage(); }}ฟังก์ชัน readDataBackwards($dbh) { $sql = 'เลือกมือ, ชนะ, เดิมพันจาก mynumbers เรียงตามเดิมพัน'; ลอง { $stmt = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL) ); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_LAST); ทำ { $data = $row[0] . "n"; พิมพ์ $data; } ในขณะที่ ($row = $stmt->ดึงข้อมูล(PDO::FETCH_NUM, PDO::FETCH_ORI_PRIOR)); $stmt = null; } catch (PDOException $e) { พิมพ์ $e->getMessage(); }} พิมพ์ "การอ่านไปข้างหน้า:n";readDataForwards($conn);พิมพ์ "การอ่านย้อนกลับ :n";readDataBackwards($conn);?>
ตัวอย่างข้างต้นจะแสดงผล:
อ่านไปข้างหน้า:21 10 516 0 519 20 10อ่านย้อนกลับ:19 20 1016 0 521 10 5