关闭Perl MySQL插入语句中的警告?

时间:2012-12-29 12:09:59

标签: mysql perl dbi

使用Perl DBI插入MySQL数据库。有些变量被故意设置为

   undef 

其中变量的值不可用,因此变量是

   NULL

在数据库中。

但是,我在insert语句中收到有关未初始化值的警告。

这里的最佳做法是什么?据我所知,除了在没有可用值时将变量设置为undef之外,没有其他方法可以在MySQL数据库中正确分配NULL。我应该关闭未初始化值的警告吗?

1 个答案:

答案 0 :(得分:3)

你可能正在做

$dbh->do("INSERT INTO Foo ( field ) VALUES ( '$x' )");

$xundef时,您将插入空字符串,而不是NULL。它还会打破其他值(例如那些包含单引号的值)。这就是你应该做的事情:

my $x_lit = defined($x) ? $dbh->quote($x) : 'NULL';
$dbh->do("INSERT INTO Foo ( field ) VALUES ( $x_lit )");

或者更好:

$dbh->do("INSERT INTO Foo ( field ) VALUES ( ? )", undef, $x);