我正在构建一个网站的登录序列,我正在为MySQL和PHP7的学校项目设计(我比较新).我需要一些帮助来理解这个错误的含义以及我如何解决这个问题:
致命错误:常量表达式在第19行的C:\ Abyss Web Server\htdocs\login_tools.php中包含无效操作
以下是函数的代码行,该函数确保登录成功并检索关联的用户详细信息:
function validate($dbc, $email=",$pwd=")
Run Code Online (Sandbox Code Playgroud)
我认为这个错误消息的解释是有价值的,因为它是PHP 7的新功能 - 为了清楚起见,我们重新构建它:
<?php
function validate($dbc, $email="$foo"){
}
?>
Run Code Online (Sandbox Code Playgroud)
作为初学者,您可能会发现PHP 5.6的错误消息对调试更有帮助:
PHP解析错误:语法错误,第3行/home/hpierce/test.php中的意外""
但是,PHP 7会显示您找到的错误:
致命错误:常量表达式在第3行的/home/hpierce/test.php中包含无效操作
当您声明一个可选参数时$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")){}
Run Code Online (Sandbox Code Playgroud)
此规则适用于需要定义常量表达式的任何情况,例如添加类常量:
<?php
class Foo
{
//Fatal error: Constant expression contains invalid operations
const BAR = $bar;
}
?>
Run Code Online (Sandbox Code Playgroud)
正如您所发布的代码行所见,您在函数声明中使用了单双引号。如果仔细观察,您会发现 ,pwd= 全部为红色,因为 $email= 后面有一个双引号
将双引号更改为 2 个单引号或添加另一个双引号。
function validate($dbc, $email='',$pwd='')
Run Code Online (Sandbox Code Playgroud)
或者
function validate($dbc, $email="",$pwd="")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16505 次 |
| 最近记录: |