【问题标题】:500 internal server error perl/Database500 内部服务器错误 perl/数据库
【发布时间】:2012-03-08 11:37:54
【问题描述】:

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

没有 if 语句它可以完美运行,但是当我添加 if 语句时,它给了我 500 错误。

所以这个可行:

my $query = "SELECT * FROM cars";

而这个没有:

if( $model eq "All"  ){

    my $query = "SELECT * FROM cars";

}

【问题讨论】:

  • 在 if 语句前回显 $model 的值。
  • echo 没有显示任何东西,在到达那条线之前就坏了。我很确定这一切都是因为如果我使用 chrome 并检查元素并查看为模型发送的标题“全部”。也刚刚发现这个错误:全局符号“$query”需要显式包名在
  • 好的,所以我通过反复试验回答了我自己的问题。我将 if 之后的 else 语句移到了之前。并把其他人拿走了。所以无论如何查询都会被设置为某种东西,我不得不从 if 语句中的 $query 中删除我的信息。现在一切都很好!显然我不知道在这个网站上回答我自己的问题......它不会让我大声笑
  • my 声明的变量具有最近封闭块的范围。在您的情况下,这意味着 $query 未在您的 if 语句之外声明。

标签: mysql database perl web


【解决方案1】:

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

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

use strict 生效,正如您报告的错误 Global symbol "$query" requires explicit package name 所暗示的那样,这将导致 500 错误。

【讨论】:

  • 这确实会导致block后面没有定义变量,但是会不会导致500 server error?
  • @Konerak 使用use strict - OP 报告的错误暗示了这一点 - 是的。因为脚本不会编译,只会报错。
猜你喜欢
  • 2013-11-13
  • 2019-01-17
  • 2011-10-17
  • 2010-11-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多