Использование неопределенного постоянного share_count - предполагается «share_count» в C: \ xampp \ htdocs \ Opinion_Mining \ get_data.php в строке 10 [дубликат]

Правильные регулярные выражения не могли бы этого сделать, поскольку вы покинули бы территорию обычных языков для приземления на территориях свободного пространства контекста.

Тем не менее, пакеты «регулярного выражения», которые предлагают многие языки,

Например, регулярные выражения Lua имеют распознаватель «%b()», который будет соответствовать сбалансированной круглой скобке. В вашем случае вы будете использовать «%b{}»

. Еще один сложный инструмент, подобный sed, - gema , где вы очень легко сопоставляете сбалансированные фигурные скобки с помощью {#}.

Итак, в зависимости от инструментов, которые у вас есть, ваше «регулярное выражение» (в более широком смысле) может соответствовать вложенным скобкам.

123
задан hakre 12 October 2012 в 20:45
поделиться

9 ответов

Вы должны указать свои ключи массива:

$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']);

Как есть, он искал константы, называемые department, name, email, message и т. д. Когда это происходит «Найти такую ​​константу, PHP (странно) интерпретирует ее как строку (« department »и т. д.). Очевидно, что это может легко сломаться, если вы позже определите такую ​​константу (хотя это плохой стиль, чтобы иметь строчные константы).

179
ответ дан tilz0R 21 August 2018 в 13:45
поделиться
  • 1
    Это относится к переменной $ _POST? – Nik 31 May 2010 в 04:10
  • 2
    Это не относится конкретно к $ _POST. То же самое произойдет и для других ассоциативных массивов. – Hammerite 31 May 2010 в 04:47
  • 3
    @Col. Шрапнель, когда я сказал, что только нужны ключи ключей? Ему нужно процитировать ключи, но не только их. – Matthew Flaschen 6 November 2011 в 11:06
  • 4
    Я имею в виду, что нет необходимости цитировать массивные ключи . нужно указать строки, а не массивы. ключ не требует специального цитирования. – Your Common Sense 6 November 2011 в 13:40
  • 5
    Это не «странно» ... Это «обратная совместимость». Первоначально PHP разрешался и даже продвигался с использованием некотируемых строк в качестве ключей. (Ладно, может быть, это все еще «причудливо». :-) – Brian White 12 October 2012 в 20:52

вы, вероятно, забыли использовать "".

Например:

$_array[text] = $_var;

изменить на:

$_array["text"] = $_var;
4
ответ дан Ajeet Shah 21 August 2018 в 13:45
поделиться

Вы пропустили размещение одиночных кавычек вокруг ваших ключей массива:

$ _ POST [email]

должно быть:

$ _ POST ['email']

0
ответ дан Andrew Kozak 21 August 2018 в 13:45
поделиться

Правильный способ использования постпеременных переменных -

<?php

$department = $_POST['department'];

?>

Использовать одинарную кавычку (')

1
ответ дан Coding Mash 21 August 2018 в 13:45
поделиться

Вставить одинарные кавычки.

Пример

$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']); 
1
ответ дан Hackbal Teamz 21 August 2018 в 13:45
поделиться

Сообщение об ошибке связано с неудачным фактом, что PHP неявно объявит неизвестный токен как константную строку с тем же именем.

То есть, он пытается интерпретировать это (обратите внимание на отсутствующие кавычки ):

$_POST[department]

Единственный допустимый способ использования этого синтаксиса в PHP заключается в том, что ранее существовала константа department. Так грустно, а не умирать с фатальной ошибкой на данный момент, оно выдает это Уведомление и действует так, как будто константа была определена с тем же именем и значением:

// Implicit declaration of constant called department with value 'department'
define('department', 'department');  

Существуют различные способы, которыми вы можете получить это сообщение об ошибке, но все они имеют одну и ту же причину - токен, который может быть константой.

Строки отсутствуют кавычки: $my_array[bad_key]

Это то, что проблема в вашем случае, и это потому, что у вас есть ключи массива строк, которые не были указаны. Исправление строковых ключей исправит ошибку:

Изменить:

$department = mysql_real_escape_string($_POST[department]);
...(etc)...

Кому:

$department = mysql_real_escape_string($_POST['department']);
...(etc)...

Переменная отсутствует знак доллара: var_without_dollar

Еще одна причина, по которой вы можете увидеть это сообщение об ошибке, - это оставить параметр $ от переменной или $this-> от члена. Например, любое из следующих может вызвать аналогичное сообщение об ошибке:

my_local;   // should be $my_local
my_member;  // should be $this->my_member

Недопустимый символ в имени переменной: $bad-variable-name

Аналогичная, но более тонкая проблема может возникнуть, если вы попытаетесь для использования запрещенного символа в имени переменной - дефис (-) вместо подчеркивания _ будет обычным случаем.

Например, это нормально, поскольку подчеркивания разрешено в именах переменных :

if (123 === $my_var) {
  do_something();
}

Но это не так:

if (123 === $my-var) {
  do_something();
}

Он будет интерпретироваться так же, как это:

if (123 === $my - var) {  // variable $my minus constant 'var'
  do_something();
}

Обращение к константе класса без указания класса scope

Чтобы ссылаться на константу класса, вам нужно указать область видимости класса с ::, если вы пропустите это, PHP будет думать вы говорите о глобальном define().

Например:

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
  }
}

Использование константы, которая не определена в этой версии PHP, или определена в расширении, которое не является установлен

Существуют некоторые системно-определенные константы, которые существуют только в более новых версиях PHP, например параметр режима константы для round() , такие как PHP_ROUND_HALF_DOWN, существуют только в PHP 5.3 или новее.

Итак, если вы попытались использовать эту функцию в PHP 5.2, скажите:

$rounded = round($my_var, 0, PHP_ROUND_HALF_DOWN);

Вы получите это сообщение об ошибке:

Использование неопределенной константы PHP_ROUND_HALF_DOWN - предполагается 'PHP_ROUND_HALF_DOWN' Предупреждение (2): Неверный параметр count для round ()

67
ответ дан John Carter 21 August 2018 в 13:45
поделиться
  • 1
    Спасибо за акцию. Я пропустил часть self::. Теперь работает. – moreirapontocom 25 June 2018 в 23:38

Не уверен, что есть какая-либо разница с использованием воспламенителя кода, и я использую «» для имен, и он отлично работает.

$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"]);

приветствует

Хорхе.

0
ответ дан Jorge Vicente Mendoza 21 August 2018 в 13:45
поделиться
  • 1
    В этом случае нет никакой разницы между одинарной и двойной кавычками. – Robbie Averill 19 November 2014 в 01:35
  • 2
    @RobbieAverill, в то время как в этом случае на самом деле нет - поскольку одиночные кавычки отображают вещи как есть, где строки двойной кавычки будут анализировать escape-символы и оценивать переменные, это хороший стиль для использования одиночных кавычек в этом сценарии. – Frankie 26 August 2015 в 15:46
<?php 
  ${test}="test information";
  echo $test;
?>

Примечание: использование неопределенного теста констант - предполагаемый «тест» в D: \ xampp \ htdocs \ sp \ test \ envoirnmentVariables.php в тестовой информации по строке 3

1
ответ дан Nikos 21 August 2018 в 13:45
поделиться

Похоже, что предопределенные константы выборки ушли с расширением MySQL, поэтому нам нужно добавить их до первой функции ...

// Предполагаемые константы выборки

define('MYSQL_BOTH',MYSQLI_BOTH);
define('MYSQL_NUM',MYSQLI_NUM);
define('MYSQL_ASSOC',MYSQLI_ASSOC);

Я проверил и преуспел.

0
ответ дан Venkat 21 August 2018 в 13:45
поделиться
  • 1
    Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. - Из обзора – ponury-kostek 27 March 2018 в 18:40
Другие вопросы по тегам:

Похожие вопросы: