อ่านค่า ID ของ record ที่บันทึกล่าสุด

การอ่าน ID ของข้อมูลที่ insert ล่าสุดบน MySQL เราสามารถทำได้โดยการใช้ฟังก์ชั่น mysql_insert_id() ครับ ซึ่งฟังก์ชั่นนี้จะทำการคืนค่าของ ID ที่กำหนดเป็น AUTO_INCREMENT ไว้
<?php
   $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
   if (!$link) {
     die('Could not connect: ' . mysql_error());
   }
   mysql_select_db('mydb');

   mysql_query("INSERT INTO mytable (product) values ('kossu')");
   printf("Last inserted record has id %d\n", mysql_insert_id());
?>

ข้อควรจำสำหรับการใช้งานคำสั่งนี้คือ
1. ค่านี้ ถูกอ่านมาจากฟิลด์ที่กำหนดเป็น AUTO_INCREMENT ไว้
2. การใช้คำสั่งนี้ ให้กระทำหลังจากการใช้คำสั่ง INSERT เท่านั้น
3. จากข้อ 1 ทำให้ไม่สามารถรับประกันได้ว่า ID ที่ได้จะเป็น ID ที่เราบันทึกหรือไม่ เนื่องจากหากเราทำการ INSERT ข้อมูลพร้อมกัน 2 รายการ อาจคืนค่าผิดพลาดได้

หากเป็นการอ่าน ID ล่าสุดทั่วๆไป เราสามารถทำได้โดยใช้ query ดังนี้ครับ
<?php
  $sql = "SELECT MAX(ID) AS lastid FROM table";
  $result = mysql_query($sql);
  $stuff = mysql_fetch_assoc($result);
  echo 'Last record is : '.$stuff[lastid];
?>

ซึ่งคำสั่งนี้ สามารถใช้เมื่อไรก็ได้ เป็นการอ่าน ID สุดท้ายของตารางครับ
ผู้เขียน goragod โพสต์เมื่อ 17 พ.ย. 2552 เปิดดู 17,781 ป้ายกำกับ SQLMySQL
^