0

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

   undef 

其中变量的值不可用,因此该变量旨在

   NULL

在数据库中。

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

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

4

1 回答 1

3

你可能正在做

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

在这种情况下,您将插入一个空字符串,而不是 NULL,when $xis undef。它还会中断其他值(例如,包含单引号的值)。这是你应该做的:

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);
于 2012-12-29T12:14:43.040 回答