2016-09-03 2 views
2

Я создаю последовательность входа для веб-сайта, который я разрабатываю для школьного проекта с MySQL и PHP7 (что я относительно новичок). Мне нужна помощь в понимании того, что это значит ошибка и как я могу решить эту проблему:PHP 7, Fatal error: константное выражение содержит недопустимые операции

Фатальная ошибка: Постоянное выражение содержит недопустимые операции в C: \ Abyss Web Server \ HTDOCS \ login_tools.php на линии 19

Вот строка коды для функции, которая обеспечивает Войти преуспела и извлекающую связанные данные пользователя:

function validate($dbc, $email=",$pwd=") 
+2

Заменить каждую двойные кавычки с двумя одинарные кавычки. –

+0

Использование $ dbc, $ email = '', $ pwd = '' с двумя одинарными кавычками вместо двойных кавычек устраняет проблему. Большое спасибо за вашу помощь :) –

+3

FYI, причина, по которой вы получаете это конкретное сообщение об ошибке, состоит в том, что '', $ pwd = "' является интерполированной строкой, эквивалентной '", ". $ pwd. "=" '. Поскольку это динамическое выражение, оно не может использоваться как значение по умолчанию. – NikiC

ответ

1

Как вы можете видеть в строке коды вы публикуемой вы использовали одну двойную котировку в функции декларация. Если вы внимательно посмотрите, вы увидите, что PWD =»все в красном цвете из-за одной двойной кавычки после $ электронной почты =

Либо изменить двойные кавычки 2 одинарных кавычек или добавить еще двойные кавычки.

function validate($dbc, $email='',$pwd='') 

ИЛИ

function validate($dbc, $email="",$pwd="") 
+0

Я пытался решить проблему часами! Большое вам спасибо за вашу помощь :) –

+0

Если ответ разрешен, вероятно, отметьте его как принятый. – Dave

+0

Без проблем, спасибо! –

8

Я думаю, что объяснение этого сообщения об ошибке является ценным, так как это новое для PHP 7 - Давайте реструктурировать это для ясности:

<?php 

function validate($dbc, $email="$foo"){ 
} 

?> 

Как новичок, вы, вероятно, нашли бы сообщение об ошибке PHP 5.6 Более полезно для отладки:

PHP Parse error: syntax error, unexpected '"' in /home/hpierce/test.php on line 3

Однако PHP 7 отображает ошибки вы нашли:

Fatal error: Constant expression contains invalid operations in /home/hpierce/test.php on line 3

Когда ты объявите необязательный аргумент, как у вас есть с $email, вам необходимо предоставить буквальное значение («постоянное выражение»), которое стоит отдельно, без необходимости оценки (определяется с помощью «недопустимые операции»). Включив ссылку на $foo, вы объявили свой необязательный аргумент, используя динамическое выражение, которое здесь недействительно.

Примеры обеспечивающих константных выражений:

//Providing an integer literal 
function validate($dbc, $email=1){} 

//Providing a string literal 
function validate2($dbc, $email="foo"){} 

//Providing an array literal 
function validate3($dbc, $email=Array("foo", "bar")){} 

Это правило применимо к любой ситуации, когда вам необходимо определить постоянные выражения, такие как добавление класса константа:

<?php 

class Foo 
{ 
    //Fatal error: Constant expression contains invalid operations 
    const BAR = $bar; 
} 

?> 
Смежные вопросы