การซ่อนไอดีของเรคอร์ดที่กำลังแสดงผล กรณีที่เราคลิกเข้าไปอ่านกระทู้ในเว็บบอร์ด หรือคลิกเข้าไปอ่านข่าว หรือข้อมูลใดๆ ส่วนใหญ่เราจะส่ง ID ไปพร้อมกับ URL เพื่อดึงข้อมูลมาแสดง แต่ทีนี้ถ้าคนเปลี่ยน ID ก็จะเห็นข้อมูลของคนอื่นๆได้ ดังนั้นเราไม่อยากเปิดเผย id จริงบน url หรือแม้กระทั่งใน input hidden อยากเข้ารหัสไว้ แต่พอเจอเคสที่ Primary key หลายๆตัว เวลาจะแสดผล โดยส่งคีย์ผ่าน url ที่เข้ารหัสแล้ว 3 ตัว มันยาวเฟื้อเลยครับท่าน!! ก็เลยคิดว่าจับมารวมกันแล้ว md5() ซะเลย แต่ md5() อย่างเดียวยังไม่ตอบโจทย์ ก็เลยคิดว่าเข้ารหัสด้วยฟังก์ชั่นที่ใช้ประจำอีกที แล้วส่งไปตามปกติ localhost/project?key=asd45632sd0043dsuitexxvnkoiyf แล้วหน้าแสดงผลก็ถอดรหัส 1 ครั้ง ก็จะได้ md5 ชุดแรกมาใช้ใน where ก็จะต้อง CONCAT() มัดฟิลด์รวมกันและ MD5() ใน WHERE อีกที ก็จะได้โค้ดแสดงข้อมูลตามไอดีที่ส่งมาดังนี้ SELECT * FROM my_table WHERE MD5(CONCAT(fieldA, fieldB, fieldC)) = '$key_ md5'
สำหรับตัวอย่างนี้จะเป็นการ JOIN ตาราง 2 ตาราง 1. tb_reject_hd 2. tb_reject_desc ซึ่งจะเชื่อมกันด้วยฟิลด์ docno จะเห็นว่าเราสามารถคิวรี่เรียกข้อมูลออกมาได้ตอนที่ยังไม่ใส่ ORDER BY แต่เมื่อใส่ ORDER BY เข้าไป จะหมุนค้างจนหน้าเว็บหยุดทำงาน จากนั้นก็ลองเพิ่ม INDEX ให้กับฟิลด์ docno ในตาราง tb_reject_desc ซึ่งในตัวอย่างนี้จะสร้างตารางใหม่ขึ้นมาจากตารางเดิม เปลี่ยนชื่อเป็น tb_reject_desc_with_index และทำการเพิ่ม INDEX KEY เข้าไป เมื่อทดสอบคิวรี่แบบมี ORDER BY จะเห็นว่าสามารถแสดงผลได้ทันที จากการสังเกตตัวเลขเวลาในการประมวลผล จะเห็นได้ว่าแบบไม่ใช้ ORDER BY จะทำงานเร็วกว่า แต่ในการทำงานส่วนใหญ่ก็มักจะต้องใช้ ORDER BY อย่างหลีกเลี่ยงไม่ได้ เช่นกรณีค้นหา แบบเรียงลำดับ ตัวอย่างโค้ดคิวรี่ข้อมูลจากตารางที่ Add Index Key แล้ว <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Add Index Key</title> </head> <body> <h2>ORDER BY with INDE