PHP schreibt diesen Fehler in die Protokolle: "Hinweis: Verwendung einer undefinierten Konstante".
Fehler in den Protokollen:
PHP Notice: Use of undefined constant department - assumed 'department' (line 5)
PHP Notice: Use of undefined constant name - assumed 'name' (line 6)
PHP Notice: Use of undefined constant email - assumed 'email' (line 7)
PHP Notice: Use of undefined constant message - assumed 'message' (line 8)
Relevante Codezeilen:
$department = mysql_real_escape_string($_POST[department]);
$name = mysql_real_escape_string($_POST[name]);
$email = mysql_real_escape_string($_POST[email]);
$message = mysql_real_escape_string($_POST[message]);
Was bedeutet das und warum sehe ich es?
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):
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: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:
Zu:
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: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 :
Aber das ist nicht:
Es wird genauso interpretiert:
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 sprechendefine()
.Z.B:
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, diePHP_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:
Sie würden diese Fehlermeldung erhalten:
quelle
self::
Teil verpasst . Es funktioniert jetzt.Sie haben wahrscheinlich vergessen zu verwenden
""
.Zum Beispiel:
ändern:
quelle
Sie haben es versäumt, einfache Anführungszeichen um Ihre Array-Schlüssel zu setzen:
sollte sein:
quelle
Die korrekte Verwendung von Post-Variablen ist
Verwenden Sie ein einfaches Anführungszeichen (')
quelle
quelle
Fügen Sie einfache Anführungszeichen ein.
Beispiel
quelle
Ich bin mir nicht sicher, ob es einen Unterschied gibt. Ich benutze Code Igniter und ich benutze "" für die Namen und es funktioniert großartig.
Grüße,
Jorge.
quelle
Es sieht so aus, als ob die vordefinierten Abrufkonstanten mit der MySQL-Erweiterung verschwunden sind. Wir müssen sie also vor der ersten Funktion hinzufügen ...
// vordefinierte Abrufkonstanten
Ich habe getestet und es geschafft.
quelle