Notice: Undefined xxx

ข้อผิดพลาด Notice: Undefined xxx หมายถึง มีการใช้ตัวแปร xxx ที่ไม่มีอยู่จริงครับ

ลองดูตัวอย่างด้านล่างนะครับ ตัวอย่างนี้ถ้านำไปรัน จะเกิด error ตามด้านบน
if ($xxx == '') {
}
$id = $_GET['id'];

สาเหตุที่เกิด error (จริงๆมันเป็นแค่ "คำเตือน" เท่านั้น ซึ่งเราจะไม่สนใจก็ได้) เป็นเพราะ เราไม่ได้มีการประกาศตัวแปรมาก่อนครับ เช่น ตัวแปร $xxx อยู่ดีๆก็มีการเรียกใช้เลย โดยที่ไม่รู้ว่าตัวแปรนี้เก็บค่าอะไร หรือตัวแปร $_GET['id'] ที่ไม่ได้มีการส่งค่ามาก่อน (querystring)

การแก้ไข
วิธีแรก คือ ต้องมีการประกาศตัวแปรไว้ก่อนเสมอ แม้ว่าอาจจะไม่มีการใช้งานตัวแปรนั้นๆก่อนหน้า
$xxx = '';
if ($xxx == '') {
}

วิธีที่สอง ใช้การตรวจสอบว่ามีตัวแปรหรือไม่ ก่อนการใช้งาน ด้วย isset
if (isset($_GET['id'])) {
    $id = $_GET['id'];
} else {
    $id = 0;
}

คำสั่งด้านบน $id จะมีค่า 0 หากไม่มีการส่งค่า id มาจาก querystring (URL) หรือจะเขียนแบบสั้นๆได้
$id = isset($_GET['id']) ? $_GET['id'] : 0;

อย่างที่ผมบอกว่ามันเป็นแค่ "คำเตือน" เท่านั้น ซึ่ง PHP ยังสามารถทำงานต่อได้จนจบ และในบาง Server (โดยเฉพาะ Server ที่ใช้งานจริง) มักมีการปิดการแสดงผลข้อผิดพลาดลักษณะนี้ไว้ (หลายๆคนอาจเคยพบว่าโค้ดสามารถรันบน Server ได้ปกติ แต่พอเอาโค้ดลงมาทดสอบบนเครื่องของเราเองกลับพบ Error เพียบ) ดังนั้นการแก้ไขอีกหนทางหนึ่ง คือการปิดการแจ้งเตือนข้อผิดพลาดของ PHP ซะ
จริงๆผมไม่แนะนำให้ปิดการแจ้งเตือนนะครับ เพราะหากมีข้อผิดพลาดใดๆที่สำคัญขึ้นมาเราจะหาไม่เจอ สิ่งที่ควรทำจริงๆในกรณีนี้ คือการประกาศตัวแปรก่อนเสมอ หรือ มีการทดสอบว่ามีตัวแปรอยู่จริงหรือไม่ ก่อนนำไปใช้งาน
ผู้เขียน goragod โพสต์เมื่อ 26 ม.ค. 2558 เปิดดู 6,411 ป้ายกำกับ PHPNotice
^