Hata iletisi, PHP'nin bilinmeyen bir belirteci aynı adda sabit bir dize olarak dolaylı olarak bildireceği talihsiz gerçeğinden kaynaklanmaktadır.
Yani, bunu yorumlamaya çalışıyor (eksik alıntı işaretlerini not edin):
$_POST[department]
Bunun PHP'de geçerli sözdizimi olabilmesinin tek geçerli yolu, önceden departmenttanımlanmış bir sabit olmasıydı . Ne yazık ki, bu noktada Ölümcül bir hata ile ölmek yerine, bu Bildirimi yayınlar ve aynı ad ve değerle bir sabit tanımlanmış gibi davranır:
// Implicit declaration of constant called department with value 'department'
define('department', 'department');
Bu hata iletisini almanın çeşitli yolları vardır, ancak hepsinin aynı kök nedeni vardır - sabit olabilecek bir belirteç .
Tırnaklar eksik tırnaklar: $my_array[bad_key]
Sizin durumunuzdaki sorun budur ve alıntılanmamış dizi dizisi anahtarlarına sahip olmanızdır. Dize anahtarlarını düzeltmek hatayı düzeltir:
Değişiklik:
$department = mysql_real_escape_string($_POST[department]);
...(etc)...
Kime:
$department = mysql_real_escape_string($_POST['department']);
...(etc)...
Değişken eksik dolar işareti: var_without_dollar
Bu hata iletisini görmenizin başka bir nedeni $, bir değişkenden veya $this->üyeden ayrılmanızdır . Örneğin, aşağıdakilerden biri benzer bir hata iletisine neden olur:
my_local; // should be $my_local
my_member; // should be $this->my_member
Değişken adında geçersiz karakter: $bad-variable-name
Değişken adında izin verilmeyen bir karakter kullanmaya çalışırsanız benzer ancak daha ince bir sorun ortaya çıkabilir - -alt çizgi yerine tire ( ) _yaygın bir durumdur.
Örneğin, değişken adlarında alt çizgilere izin verildiğinden bu sorun olmaz :
if (123 === $my_var) {
do_something();
}
Ama bu değil:
if (123 === $my-var) {
do_something();
}
Şununla aynı yorumlanacaktır:
if (123 === $my - var) { // variable $my minus constant 'var'
do_something();
}
Sınıf kapsamını belirtmeden sınıf sabitine başvurma
Bir sınıf sabitine başvurmak için sınıf kapsamını belirtmeniz gerekir ::, bunu kaçırırsanız PHP bir küresel hakkında konuştuğunuzu düşünecektir define().
Örneğin:
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'nin bu sürümünde tanımlı olmayan veya kurulu olmayan bir uzantıda tanımlı bir sabit kullanma
Sadece örneğin, PHP yeni sürümlerinde mod seçeneği sabitleri var bazı sistem tanımlı sabitleri vardır round()gibi PHP_ROUND_HALF_DOWNPHP 5.3 veya daha sonra mevcut sadece.
PHP 5.2'de bu özelliği kullanmaya çalıştıysanız, şunu söyleyin:
$rounded = round($my_var, 0, PHP_ROUND_HALF_DOWN);
Bu hata mesajını alırsınız:
Tanımlanmamış sabit PHP_ROUND_HALF_DOWN kullanımı - 'PHP_ROUND_HALF_DOWN' kabul edildi Uyarı (2): round () için yanlış parametre sayısı