我试图将文本框中的值插入到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
答案 0 :(得分:5)
Perl使用标量变量,这是一个非常通用的小东西。他们遇到的一个问题是他们的“真实性”并不总是显而易见的。
如果使用布尔测试测试标量,则在以下情况下将为false:
(如果未定义或没有元素,则数组测试为false。)
所以正确的答案是 - 使用defined
检查值是否已定义。或者使用正则表达式来匹配“有效”值。
E.g。
if ( $animal =~ m/\w+/ ) {
#do something
}
\w+
是用于表示“一个或多个单词字符”的perl正则表达式,它是字母数字和下划线。因此,您的空字符串,仅空格字符串或未定义的字符串都将与此模式不匹配。
答案 1 :(得分:5)
这里有很多问题。解决最糟糕的问题:
=
进行分配,而非比较。使用==
比较数字和eq
来比较字符串。if ($animal) { ... }
)或更复杂(或许if ($animal =~ /\w/) { ... }
)的事情。答案 2 :(得分:0)
在Perl中没有空值,只有未定义的!
if (defined $value)
{
Do that
}
else
{
Do this
}
如果我回答你的问题,请投票给我。