ข้อความแสดงข้อผิดพลาดเกิดจากข้อเท็จจริงที่โชคร้ายที่ PHP จะประกาศโทเค็นที่ไม่รู้จักเป็นสตริงคงที่ในชื่อเดียวกัน
นั่นคือมันพยายามตีความสิ่งนี้ (สังเกตเครื่องหมายคำพูดที่หายไป): 
$_POST[department]
วิธีที่ถูกต้องเพียงอย่างเดียวนี้จะเป็นไวยากรณ์ที่ถูกต้องใน PHP คือถ้าก่อนหน้านี้มีการdepartmentกำหนดค่าคงที่ น่าเศร้าแทนที่จะเสียชีวิตด้วยข้อผิดพลาดร้ายแรง ณ จุดนี้มันออกประกาศนี้และทำราวกับว่าค่าคงที่ได้ถูกกำหนดด้วยชื่อและค่าเดียวกัน:
// Implicit declaration of constant called department with value 'department'
define('department', 'department');  
มีหลายวิธีที่คุณจะได้รับข้อความแสดงข้อผิดพลาดนี้ แต่พวกเขาทั้งหมดมีสาเหตุเดียวกัน - โทเค็นที่อาจเป็นค่าคงที่
สตริงที่ไม่มีเครื่องหมายคำพูด:  $my_array[bad_key]
นี่คือสิ่งที่เป็นปัญหาในกรณีของคุณและเป็นเพราะคุณมีคีย์อาร์เรย์ของสตริงที่ยังไม่ได้ถูกอ้างถึง การแก้ไขคีย์สตริงจะแก้ไขข้อบกพร่อง:
เปลี่ยนแปลง:
$department = mysql_real_escape_string($_POST[department]);
...(etc)...
ถึง:
$department = mysql_real_escape_string($_POST['department']);
...(etc)...
เครื่องหมายดอลลาร์ที่หายไปแบบแปรผัน: var_without_dollar
อีกเหตุผลที่คุณอาจเห็นข้อความแสดงข้อผิดพลาดนี้คือถ้าคุณละทิ้ง$จากตัวแปรหรือ$this->จากสมาชิก เช่นสิ่งใดสิ่งหนึ่งต่อไปนี้อาจทำให้เกิดข้อผิดพลาดที่คล้ายกัน:
my_local;   // should be $my_local
my_member;  // should be $this->my_member
อักขระไม่ถูกต้องในชื่อตัวแปร: $bad-variable-name
ปัญหาที่คล้ายกัน แต่ละเอียดกว่านี้อาจส่งผลให้คุณลองใช้อักขระที่ไม่ได้รับอนุญาตในชื่อตัวแปร - ยัติภังค์ ( -) แทนที่จะใช้เครื่องหมายขีดล่าง_จะเป็นกรณีทั่วไป
ตัวอย่างเช่นนี่คือตกลงเนื่องจากอนุญาตขีดล่างในชื่อตัวแปร :
if (123 === $my_var) {
  do_something();
}
แต่นี่ไม่ใช่:
if (123 === $my-var) {
  do_something();
}
มันจะถูกตีความเช่นเดียวกับสิ่งนี้:
if (123 === $my - var) {  // variable $my minus constant 'var'
  do_something();
}
อ้างถึงค่าคงที่คลาสโดยไม่ระบุขอบเขตคลาส
เพื่อที่จะหมายถึงระดับคงที่คุณจะต้องระบุขอบเขตของคลาสด้วย::ถ้าคุณพลาดนี้ปิด PHP define()จะคิดว่าคุณกำลังพูดถึงทั่วโลก
เช่น:
class MyClass {
  const MY_CONST = 123;
  public function my_method() {
    return self::MY_CONST;  // This is fine
  }
  public function my_method() {
    return MyClass::MY_CONST;  // This is fine
  }
  public function my_bad_method() {
    return MY_CONST;  // BUG - need to specify class scope
  }
}
การใช้ค่าคงที่ที่ไม่ได้กำหนดใน PHP เวอร์ชันนี้หรือกำหนดไว้ในส่วนขยายที่ไม่ได้ติดตั้ง
มีค่าคงที่ที่ระบบกำหนดบางอย่างที่มีอยู่ใน PHP รุ่นที่ใหม่กว่าเท่านั้นตัวอย่างเช่นค่าคงที่ตัวเลือกโหมดสำหรับround()เช่นPHP_ROUND_HALF_DOWNมีอยู่เฉพาะใน PHP 5.3 หรือใหม่กว่า
ดังนั้นหากคุณพยายามใช้คุณสมบัตินี้ใน PHP 5.2 ให้พูดว่า:
$rounded = round($my_var, 0, PHP_ROUND_HALF_DOWN);
คุณได้รับข้อความแสดงข้อผิดพลาดนี้:
  การใช้ค่าคงที่ PHP_ROUND_HALF_DOWN ที่ไม่ได้กำหนด - สันนิษฐานว่า 'PHP_ROUND_HALF_DOWN' คำเตือน (2): นับพารามิเตอร์ผิดสำหรับรอบ ()