Notice: Undefined 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 ซะ