Mysql 500内部服务器错误perl/数据库

Mysql 500内部服务器错误perl/数据库,mysql,database,perl,web,Mysql,Database,Perl,Web,我正在从我的perl脚本访问一个数据库,并试图在其中放入一个if语句,以便能够根据用户选择的内容查询不同的内容 它在没有if语句的情况下工作得很好,但是当我添加if语句时,它会给我500个错误 所以这一个有效: my $query = "SELECT * FROM cars"; 而这一条没有: if( $model eq "All" ){ my $query = "SELECT * FROM cars"; } 用my声明的变量的作用域为最近的封闭块。在您的情况下,这意味着$qu

我正在从我的perl脚本访问一个数据库,并试图在其中放入一个if语句,以便能够根据用户选择的内容查询不同的内容

它在没有if语句的情况下工作得很好,但是当我添加if语句时,它会给我500个错误

所以这一个有效:

my $query = "SELECT * FROM cars";
而这一条没有:

if( $model eq "All"  ){

    my $query = "SELECT * FROM cars";

}

用my声明的变量的作用域为最近的封闭块。在您的情况下,这意味着
$query
不会在if语句之外声明

解决方案是将声明放在正确的范围内,例如在if语句之前


使用strict
生效时,正如您报告的错误所暗示的那样,
全局符号“$query”需要显式的包名
,这将导致500个错误。

使用my声明的变量的范围为最近的封闭块。在您的情况下,这意味着
$query
不会在if语句之外声明

解决方案是将声明放在正确的范围内,例如在if语句之前


使用strict
生效时,正如您报告的错误所暗示的那样,
全局符号“$query”需要显式的包名
,这将导致500错误。

在if语句之前回显$model的值。回显没有显示任何内容,在到达该行之前中断。我很确定这一切都是因为如果我使用chrome和inspect元素,并查看发送给模型的标题“all”。还发现了这个错误:全局符号“$query”需要显式的包名atOK,所以我通过反复试验回答了自己的问题。我把if后面的else语句移到了前面。把其他的拿走了。因此,无论发生什么,查询都会被设置为某个值,并且我必须在if语句中将my从$query的infont中去掉。现在一切都好了!显然,我不知道如何在这个网站上回答我自己的问题……它不允许我使用
my
声明的变量具有最近封闭块的范围。在您的情况下,这意味着,
$query
没有在if语句之外声明。echo在if语句之前声明$model的值。echo没有显示任何内容,在到达该行之前中断。我很确定这一切都是因为如果我使用chrome和inspect元素,并查看发送给模型的标题“all”。还发现了这个错误:全局符号“$query”需要显式的包名atOK,所以我通过反复试验回答了自己的问题。我把if后面的else语句移到了前面。把其他的拿走了。因此,无论发生什么,查询都会被设置为某个值,并且我必须在if语句中将my从$query的infont中去掉。现在一切都好了!显然,我不知道如何在这个网站上回答我自己的问题……它不允许我使用
my
声明的变量具有最近封闭块的范围。在您的情况下,这意味着未在if语句之外声明
$query
。这确实会导致在块后未定义变量,但这会导致500服务器错误吗?@Konerak With
使用strict
-这是OP报告的错误所暗示的-yes。因为脚本不会编译,所以只报告错误。这确实会导致在块后未定义变量,但这会导致500服务器错误吗?@Konerak With
使用strict
-这是OP报告的错误所暗示的-是。因为脚本不会编译,所以只报告错误。