SELECT count(*) AS total FROM my_table WHERE id = xxxx
หลังจากที่ตั้งหน้าตั้งตามทำรายงานเอกสารตีกลับอยู่หลายวัน และทดสอบจนแน่ใจว่าทำงานได้ถูกต้อง บันทึกได้ ค้นหาได้ แก้ไขได้ ในที่สุดก็ได้เวลานำไปให้ยูสเซอร์เขาใช้กันจริงๆ ซะที
และแล้วสิ่งที่ไม่คาดฝันก็บังเกิดขึ้น นับจำนวนครั้งแล้วเกิน ทั้งที่เป็นครั้งแรกแต่ดันพิมพ์รายงานออกมาเป็นการตีกลับครั้งที่ 2
เลยนั่งค้นหาสาเหตุอยู่นาน ไม่ว่าจะพิมพ์ยังไงก็เกิน
แต่พอนำโค๊โเอาไปคิวรี่ใน phpMyAdmin แล้วไม่เกินแฮะ แปลกมากๆ โค๊ดก็ทำงานได้ปกติไม่มีข้อผิดพลาดแต่อย่างใด แล้วเหตุไฉนถึงพิมพ์ข้อมูลออกมาไม่ตรง
ในที่สุดก็พบคำตอบที่ข้องใจว่าทำไมถึงนับเกินตลอด และทุกครั้งที่สั่งพิมพ์จะเกินไป 1 เสมอ
ก็เพราะดันนับหลังจาก insert ไปแล้ว
ก็แน่ล่ะสิ มันต้องเกินอยู่แล้ว การนับลำดับมันควรจะนับก่อน insert ไม่ใช่เหรอ
1) นับจำนวนครั้ง ได้ 0
2) นำค่าที่ได้ +1 เพื่อหาลำดับปัจจุบันจะได้ 1
3) พิมพ์ออกมาจะได้ครั้งที่ 1
แต่ดันสลับขั้นตอนที่ 1 กับ 2
1) insert ข้อมูลลงไป
2) นับจำนวนครั้งได้ 1 นับไปบวก +1 จะได้ 2
3) เมื่อสั่งพิมพ์ทั้งที่เป็นครั้งแรก แต่ดันพิมพ์ครั้งที่ 2 ออกมา
วิธีแก้ก็มีอยู่ 2 วิธี
1 สลับลำดับการทำงาน
2 ไม่ต้อง +1
แต่ผมเลือกสลับลำดับการทำงาน เพราะจะต้องแสดงตัวเลขให้ผู้ใช้เห็นจึงนับแล้ว +1
แล้วก็ผ่านไปอีก 1 งานโดยที่บาดเจ็บไปพอสมควร ^^"
ความคิดเห็น
แสดงความคิดเห็น