PHP записывает эту ошибку в журналах: «Обратите внимание: использование неопределенной константы».
Ошибка в логах:
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)
Соответствующие строки кода:
$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]);
Что это значит и почему я это вижу?
Сообщение об ошибке происходит из-за неудачного факта, что PHP неявно объявит неизвестный токен как константную строку с тем же именем.
То есть он пытается интерпретировать это (обратите внимание на отсутствующие кавычки):
Единственный верный способ, которым это будет действительный синтаксис в PHP - это если ранее была
department
определена константа . К сожалению, вместо того, чтобы умереть с фатальной ошибкой в этот момент, он выдает это уведомление и действует так, как если бы константа была определена с тем же именем и значением:Есть несколько способов получить это сообщение об ошибке, но все они имеют одну и ту же основную причину - токен, который может быть константой.
Строки без кавычек:
$my_array[bad_key]
Это то, что проблема в вашем случае, и это потому, что у вас есть ключи строкового массива, которые не были заключены в кавычки. Исправление строковых ключей исправит ошибку:
Изменить:
Для того, чтобы:
Переменная отсутствует знак доллара:
var_without_dollar
Другая причина, по которой вы можете увидеть это сообщение об ошибке, заключается в том, что вы пропускаете
$
переменную или$this->
член. Например, любое из следующего может вызвать похожее сообщение об ошибке:Недопустимый символ в имени переменной:
$bad-variable-name
Подобная, но более тонкая проблема может возникнуть, если вы попытаетесь использовать запрещенный символ в имени переменной - обычным случаем будет дефис (
-
) вместо подчеркивания_
.Например, это нормально, поскольку в именах переменных допускается подчеркивание :
Но это не так:
Это будет интерпретировано так же, как это:
Ссылка на константу класса без указания области видимости класса
Чтобы сослаться на константу класса, вам нужно указать область видимости класса
::
, если вы пропустите это, PHP подумает, что вы говорите о глобальномdefine()
.Например:
Использование константы, которая не определена в этой версии PHP или определена в расширении, которое не установлено
Существуют некоторые системные константы, которые существуют только в более новых версиях PHP, например, константы опций режима для
round()
таких, которыеPHP_ROUND_HALF_DOWN
существуют только в PHP 5.3 или новее.Поэтому, если вы пытались использовать эту функцию в PHP 5.2, скажите:
Вы получите это сообщение об ошибке:
источник
self::
часть. Теперь работает.Вы, вероятно, забыли использовать
""
.Например:
изменить на:
источник
Вы пропустили одинарные кавычки вокруг ключей массива:
должно быть:
источник
Правильный способ использования почтовых переменных:
Используйте одинарные кавычки (')
источник
источник
Вставьте одинарные кавычки.
пример
источник
Я не уверен, есть ли какая-либо разница, я использую воспламенитель кода, и я использую "" для имен, и это прекрасно работает.
С уважением,
Хорхе.
источник
Похоже, что предопределенные константы выборки исчезли с расширением MySQL, поэтому нам нужно добавить их перед первой функцией ...
// предопределенные константы выборки
Я проверил и преуспел.
источник