Die Fehlermeldung ist auf die unglückliche Tatsache zurückzuführen, dass PHP implizit ein unbekanntes Token als konstante Zeichenfolge mit demselben Namen deklariert.
Das heißt, es wird versucht, dies zu interpretieren (beachten Sie die fehlenden Anführungszeichen):
$_POST[department]
Der einzig gültige Weg, wie dies eine gültige Syntax in PHP wäre, wäre, wenn zuvor eine Konstante department
definiert worden wäre. Leider stirbt es an dieser Stelle nicht mit einem schwerwiegenden Fehler, sondern gibt diesen Hinweis aus und verhält sich so, als ob eine Konstante mit demselben Namen und Wert definiert worden wäre:
// Implicit declaration of constant called department with value 'department'
define('department', 'department');
Es gibt verschiedene Möglichkeiten , wie Sie diese Fehlermeldung erhalten können, aber sie alle haben die gleiche Ursache - ein Token , das könnte eine Konstante sein.
Zeichenfolgen fehlen Anführungszeichen: $my_array[bad_key]
Dies ist das Problem in Ihrem Fall, und es liegt daran, dass Sie String-Array-Schlüssel haben, die nicht in Anführungszeichen gesetzt wurden. Durch das Korrigieren der String-Schlüssel wird der Fehler behoben:
Veränderung:
$department = mysql_real_escape_string($_POST[department]);
...(etc)...
Zu:
$department = mysql_real_escape_string($_POST['department']);
...(etc)...
Variables fehlendes Dollarzeichen: var_without_dollar
Ein weiterer Grund, warum diese Fehlermeldung möglicherweise angezeigt wird, besteht darin, dass Sie das $
von einer Variablen oder $this->
von einem Mitglied weglassen. Beispielsweise würde eine der folgenden Ursachen eine ähnliche Fehlermeldung verursachen:
my_local; // should be $my_local
my_member; // should be $this->my_member
Ungültiges Zeichen im Variablennamen: $bad-variable-name
Ein ähnliches, aber subtileres Problem kann auftreten, wenn Sie versuchen, ein nicht zugelassenes Zeichen in einem Variablennamen zu verwenden. Ein Bindestrich ( -
) anstelle eines Unterstrichs _
ist ein häufiger Fall.
Dies ist beispielsweise in Ordnung, da Unterstreichungen in Variablennamen zulässig sind :
if (123 === $my_var) {
do_something();
}
Aber das ist nicht:
if (123 === $my-var) {
do_something();
}
Es wird genauso interpretiert:
if (123 === $my - var) { // variable $my minus constant 'var'
do_something();
}
Verweisen auf eine Klassenkonstante ohne Angabe des Klassenbereichs
Um auf eine Klassenkonstante zu verweisen, müssen Sie den Klassenbereich mit angeben. ::
Wenn Sie dies verpassen, wird PHP denken, dass Sie von einer globalen Konstante sprechen define()
.
Z.B:
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
}
}
Verwenden einer Konstante, die in dieser PHP-Version nicht definiert ist oder in einer nicht installierten Erweiterung definiert ist
Es gibt einige systemdefinierte Konstanten, die nur in neueren Versionen von PHP vorhanden sind, z. B. die Modusoptionskonstanten für round()
solche, die PHP_ROUND_HALF_DOWN
nur in PHP 5.3 oder höher vorhanden sind.
Wenn Sie also versucht haben, diese Funktion in PHP 5.2 zu verwenden, sagen Sie:
$rounded = round($my_var, 0, PHP_ROUND_HALF_DOWN);
Sie würden diese Fehlermeldung erhalten:
Verwendung der undefinierten Konstante PHP_ROUND_HALF_DOWN - angenommen 'PHP_ROUND_HALF_DOWN' Warnung (2): Falsche Parameteranzahl für round ()