PHP est en train d'écrire cette erreur dans les logs: "Remarque: Utilisation d'une constante non définie".
Erreur dans les journaux:
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)
Lignes de code pertinentes:
$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]);
Qu'est-ce que cela signifie et pourquoi le vois-je?
Le message d'erreur est dû au fait malheureux que PHP déclarera implicitement un jeton inconnu comme une chaîne constante du même nom.
Autrement dit, il essaie d'interpréter cela (notez les guillemets manquants):
La seule façon valable que cette syntaxe soit valide en PHP est si une constante était précédemment
department
définie. Malheureusement, plutôt que de mourir avec une erreur fatale à ce stade, il émet cet avis et agit comme si une constante avait été définie avec le même nom et la même valeur:Il existe plusieurs façons d'obtenir ce message d'erreur, mais elles ont toutes la même cause fondamentale - un jeton qui pourrait être une constante.
Chaînes de guillemets manquants:
$my_array[bad_key]
C'est le problème dans votre cas, et c'est parce que vous avez des clés de tableau de chaînes qui n'ont pas été citées. La correction des clés de chaîne corrigera le bogue:
Changement:
À:
Signe dollar manquant variable:
var_without_dollar
Une autre raison pour laquelle vous pouvez voir ce message d'erreur est si vous omettez
$
de une variable ou$this->
d'un membre. Par exemple, l'un des éléments suivants provoquerait un message d'erreur similaire:Caractère non valide dans le nom de la variable:
$bad-variable-name
Un problème similaire mais plus subtil peut survenir si vous essayez d'utiliser un caractère non autorisé dans un nom de variable - un tiret (
-
) au lieu d'un trait de soulignement_
serait un cas courant.Par exemple, c'est OK, car les traits de soulignement sont autorisés dans les noms de variables :
Mais ce n'est pas:
Cela sera interprété de la même manière:
Faire référence à une constante de classe sans spécifier la portée de la classe
Pour faire référence à une constante de classe, vous devez spécifier la portée de la classe avec
::
, si vous manquez cela, PHP pensera que vous parlez d'un globaldefine()
.Par exemple:
Utiliser une constante qui n'est pas définie dans cette version de PHP ou qui est définie dans une extension qui n'est pas installée
Certaines constantes définies par le système n'existent que dans les versions plus récentes de PHP, par exemple les constantes d'option de mode pour
round()
tellesPHP_ROUND_HALF_DOWN
qu'existent uniquement dans PHP 5.3 ou version ultérieure.Donc, si vous avez essayé d'utiliser cette fonctionnalité dans PHP 5.2, dites:
Vous obtiendrez ce message d'erreur:
la source
self::
partie. Ça marche maintenant.vous avez probablement oublié d'utiliser
""
.Par exemple:
changer en:
la source
Vous avez manqué de mettre des guillemets simples autour de vos clés de tableau:
devrait être:
la source
La bonne façon d'utiliser les variables de publication est
Utiliser une citation simple (')
la source
la source
Insérez des guillemets simples.
Exemple
la source
Je ne suis pas sûr s'il y a une différence en utilisant un allumeur de code et j'utilise "" pour les noms et cela fonctionne très bien.
Cordialement,
Jorge.
la source
On dirait que les constantes de récupération prédéfinies ont disparu avec l'extension MySQL, nous devons donc les ajouter avant la première fonction ...
// constantes de récupération prédéfinies
J'ai testé et réussi.
la source