PHP está escribiendo este error en los registros: "Aviso: uso de constante indefinida".
Error en los registros:
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)
Líneas de código relevantes:
$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é significa y por qué lo estoy viendo?
El mensaje de error se debe al desafortunado hecho de que PHP declarará implícitamente un token desconocido como una cadena constante del mismo nombre.
Es decir, está tratando de interpretar esto (tenga en cuenta las comillas faltantes):
La única forma válida de que esta sea una sintaxis válida en PHP es si previamente se
department
definió una constante . Lamentablemente, en lugar de morir con un error Fatal en este punto, emite este Aviso y actúa como si se hubiera definido una constante con el mismo nombre y valor:Hay varias formas de obtener este mensaje de error, pero todas tienen la misma causa raíz: un token que podría ser una constante.
Cadenas que faltan comillas:
$my_array[bad_key]
Este es el problema en su caso, y es porque tiene claves de matriz de cadenas que no se han citado. Arreglar las teclas de cadena solucionará el error:
Cambio:
A:
Signo de dólar faltante variable:
var_without_dollar
Otra razón por la que puede ver este mensaje de error es si deja de lado
$
una variable o$this->
un miembro. Por ejemplo, cualquiera de los siguientes podría causar un mensaje de error similar:Carácter no válido en el nombre de la variable:
$bad-variable-name
Un problema similar pero más sutil puede resultar si intenta usar un carácter no permitido en un nombre de variable; un guión (
-
) en lugar de un guión bajo_
sería un caso común.Por ejemplo, esto está bien, ya que los guiones bajos están permitidos en los nombres de variables :
Pero esto no es:
Se interpretará de la misma manera:
Refiriéndose a una constante de clase sin especificar el alcance de la clase
Para hacer referencia a una constante de clase, debe especificar el alcance de la clase
::
, si se lo pierde de PHP, pensará que está hablando de un globaldefine()
.P.ej:
Usando una constante que no está definida en esta versión de PHP, o está definida en una extensión que no está instalada
Hay algunas constantes definidas por el sistema que solo existen en versiones más nuevas de PHP, por ejemplo, las constantes de opción de modo para
round()
las quePHP_ROUND_HALF_DOWN
solo existen en PHP 5.3 o posterior.Entonces, si trató de usar esta característica en PHP 5.2, diga:
Recibirías este mensaje de error:
fuente
self::
parte. Está funcionando ahora.probablemente te olvidaste de usar
""
.Por ejemplo:
cambiar a:
fuente
Te perdiste poner comillas simples alrededor de las teclas de tu matriz:
debiera ser:
fuente
La forma correcta de usar variables de publicación es
Usar comillas simples (')
fuente
fuente
Insertar comillas simples.
Ejemplo
fuente
No estoy seguro de si hay alguna diferencia al usar el encendedor de código y uso "" para los nombres y funciona muy bien.
Saludos,
Jorge
fuente
Parece que las constantes de búsqueda predefinidas desaparecieron con la extensión MySQL, por lo que debemos agregarlas antes de la primera función ...
// constantes de captación predefinidas
Lo probé y lo logré.
fuente