Perl if语句,If value = nothing do语句if value = something do statement

时间:2014-12-08 11:42:18

标签: mysql perl xampp

我试图将文本框中的值插入到SQL表中。虽然当我将文本框留空时,它会添加一个空白值,然后导致其余的表单函数无效。

我希望if语句检查$ animal是否为空,什么都不做,如果$ animal中有内容,则执行插入表。

不太确定放在哪里放什么???

if ($animal = " ") {
} else if ($animal = "???"){
insertTable("INSERT INTO $table(name) VALUE ('".$animal."')");

第24 - 27行是

sub insertTable {
$statement = shift (@_);
$dbh->do($statement);
}  # sub

3 个答案:

答案 0 :(得分:5)

Perl使用标量变量,这是一个非常通用的小东西。他们遇到的一个问题是他们的“真实性”并不总是显而易见的。

如果使用布尔测试测试标量,则在以下情况下将为false:

  • 未定义。
  • 这是字符串。
  • 数字为零。

(如果未定义没有元素,则数组测试为false。)

所以正确的答案是 - 使用defined检查值是否已定义。或者使用正则表达式来匹配“有效”值。

E.g。

if ( $animal =~ m/\w+/ ) { 
    #do something 
}

\w+是用于表示“一个或多个单词字符”的perl正则表达式,它是字母数字和下划线。因此,您的空字符串,仅空格字符串或未定义的字符串都将与此模式不匹配。

答案 1 :(得分:5)

这里有很多问题。解决最糟糕的问题:

  1. 您使用=进行分配,而非比较。使用==比较数字和eq来比较字符串。
  2. 您将变量与单个空格进行比较。你不可能在$ animal中获得单个空格字符。你想要做一些更简单(if ($animal) { ... })或更复杂(或许if ($animal =~ /\w/) { ... })的事情。
  3. 您正在将用户输入直接插入到SQL中,然后针对您的数据库运行。这导致SQL injection attacks。最好在SQL中使用绑定点。

答案 2 :(得分:0)

在Perl中没有空值,只有未定义的!

if (defined $value)
{
  Do that
}
else
{
  Do this
}

如果我回答你的问题,请投票给我。

相关问题