PDOStatement::rowCount — ส่งกลับจำนวนแถวที่ได้รับผลกระทบจากคำสั่ง SQL ก่อนหน้า (PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
int PDOStatement::rowCount ( โมฆะ )
PDOStatement::rowCount() ส่งกลับจำนวนแถวที่ได้รับผลกระทบจากคำสั่ง DELETE, INSERT หรือ UPDATE ล่าสุดที่ดำเนินการโดยวัตถุ PDOStatement ที่สอดคล้องกัน
หากคำสั่ง SQL สุดท้ายที่ดำเนินการโดย PDOStatement ที่เกี่ยวข้องเป็นคำสั่ง SELECT ข้อมูลบางส่วนอาจส่งคืนจำนวนแถวที่ส่งคืนโดยคำสั่งนี้ อย่างไรก็ตาม วิธีการนี้ไม่รับประกันว่าจะใช้ได้กับข้อมูลทั้งหมด และไม่ควรนำไปใช้กับแอปพลิเคชันแบบพกพา
ส่งกลับจำนวนแถว
PDOStatement::rowCount() ส่งกลับจำนวนแถวที่ได้รับผลกระทบจากคำสั่ง DELETE, INSERT หรือ UPDATE
<?php/* ลบแถวทั้งหมดออกจากตารางข้อมูล FRUIT*/$del = $dbh->prepare('DELETE FROM Fruit');$del->execute();/* คืนจำนวนแถวที่ถูกลบ*/print ("ส่งคืนจำนวนแถวที่ถูกลบ:n");$count = $del->rowCount();print("ลบ $count rows.n");?>
ผลลัพธ์ตัวอย่างข้างต้น:
ส่งกลับจำนวนแถวที่ถูกลบ: ลบแล้ว 9 แถว
สำหรับฐานข้อมูลส่วนใหญ่ PDOStatement::rowCount() ไม่สามารถส่งคืนจำนวนแถวที่ได้รับผลกระทบจากคำสั่ง SELECT ได้ หรือใช้ PDO::query() เพื่อออกคำสั่ง SELECT COUNT(*) ด้วยนิพจน์เงื่อนไขเดียวกันกับคำสั่ง SELECT ที่ตั้งใจไว้แต่แรก จากนั้นใช้ PDOStatement::fetchColumn() เพื่อดึงข้อมูลแถวถัดไป วิธีนี้ทำให้แอปพลิเคชันสามารถดำเนินการได้อย่างถูกต้อง
<?php$sql = "SELECT COUNT(*) จากผลไม้ WHERE แคลอรี่ > 100";if ($res = $conn->query($sql)) { /* ตรวจสอบจำนวนแถวที่ตรงกับคำสั่ง SELECT*/ if ($ res->fetchColumn() > 0) { /* ออกคำสั่ง SELECT จริงและดำเนินการกับผลลัพธ์ที่ส่งคืน*/ $sql = "เลือกชื่อจากผลไม้ WHERE แคลอรี่ > 100"; foreach ($conn->query($sql) as $row) { print "Name: " . $row['NAME'] . "n"; } } /* ไม่มีแถวที่ตรงกัน - - ดำเนินการ other */ else { print "No rowsmatched the query."; }}$res = null;$conn = null;?>
ผลลัพธ์ที่ได้ของตัวอย่างข้างต้นคือ:
แอปเปิลกล้วยส้มลูกแพร์