त्रुटि संदेश दुर्भाग्यपूर्ण तथ्य के कारण है कि 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();
}
वर्ग गुंजाइश निर्दिष्ट किए बिना एक वर्ग निरंतर का जिक्र
एक वर्ग स्थिरांक को संदर्भित करने के लिए आपको कक्षा के दायरे को निर्दिष्ट करने की आवश्यकता होती है ::
, यदि आपको यह याद आती है तो पीएचपी सोचेंगे कि आप एक वैश्विक के बारे में बात कर रहे हैं 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): दौर के लिए गलत पैरामीटर गणना ()