Mysql日期\u添加1年
有人能帮我弄清楚为什么加1年对我来说不起作用吗 我有6种其他情况(1天、1周、2个月等)。唯一不起作用的是今年 有人知道为什么吗?如果有关系,这就是PerlMysql日期\u添加1年,mysql,perl,Mysql,Perl,有人能帮我弄清楚为什么加1年对我来说不起作用吗 我有6种其他情况(1天、1周、2个月等)。唯一不起作用的是今年 有人知道为什么吗?如果有关系,这就是Perl elsif ($data{length} == "6month") { $store = qq(INSERT INTO main (creator_name,email2,relationship,reason,email1,name1,creator_email,email3,name2,name3,creator_url,victim_
elsif ($data{length} == "6month")
{
$store = qq(INSERT INTO main (creator_name,email2,relationship,reason,email1,name1,creator_email,email3,name2,name3,creator_url,victim_url,length_of_stay,release_date) VALUES("$data{creatorname}","$data{email2}","$data{relationship}","$data{reason}","$data{email1}","$data{person1}","$data{creatoremail}","$data{email3}","$data{person2}","$data{person3}", "$creatorURL", "$victimURL","$data{length}", DATE_ADD(NOW(), INTERVAL 6 MONTH)) );
}
elsif($data{length} == "1year")
{
$store = qq(INSERT INTO main (creator_name,email2,relationship,reason,email1,name1,creator_email,email3,name2,name3,creator_url,victim_url,length_of_stay,release_date) VALUES("$data{creatorname}","$data{email2}","$data{relationship}","$data{reason}","$data{email1}","$data{person1}","$data{creatoremail}","$data{email3}","$data{person2}","$data{person3}", "$creatorURL", "$victimURL","$data{length}", DATE_ADD(NOW(), INTERVAL 1 YEAR)) );
}
my $sth = $dbh->prepare($store);
$sth->execute() or die $dbh->errstr;
在perl中,应该使用“eq”运算符来比较字符串
elsif ( $data{length} eq '6month') {
此外,如果在sql语句中使用占位符也会更好。因为:
- 它们几乎是一样的
- 它将保护您免受sql注入的影响
- 您可以多次使用一个预先准备好的语句,当 您可以在循环中使用类似的语句
- 您将减少代码重复。不要重复你自己
my $interval = 0;
...
elsif ( $data{length} eq '6month' ) {
$interval = 6;
}
elsif( $data{length} eq '1year' ) {
$interval = 12;
}
my $sth = $dbh->prepare( 'INSERT INTO main ( creator_name, email2, relationship, reason, email1, name1, creator_email, email3, name2, name3, creator_url, victim_url, length_of_stay, release_date ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, DATE_ADD(NOW(), INTERVAL ? MONTH) );' );
$sth->execute( $data{creatorname},
$data{email2},
$data{relationship},
$data{reason},
$data{email1},
$data{person1},
$data{creatoremail},
$data{email3},
$data{person2},
$data{person3},
$creatorURL,
$victimURL,
$data{length},
$interval
) or die $dbh->errstr;
如果必须在循环中执行此插入操作,请移动
$dbh->在此循环外准备语句。根目录下的问题是没有启用警告;如果你有,你会得到这样的警告:
$ perl
use warnings;
$data{length} = "1year";
if ($data{length} == "1month") {
print "yes, 1month does == 1year\n";
}
__END__
Argument "1month" isn't numeric in numeric eq (==) at - line 4.
Argument "1year" isn't numeric in numeric eq (==) at - line 4.
yes, 1month does == 1year
我相信你能想出比“不起作用”和“不起作用”更好的描述