0

Perl DBI を使用して MySQL データベースに挿入しています。一部の変数は、意図的に次のように設定されています。

   undef 

変数の値が利用できないため、変数は

   NULL

データベースで。

ただし、挿入ステートメントで初期化されていない値に関する警告が表示されます。

ここでのベストプラクティスは何ですか? 私の知る限り、利用可能な値がない場合に変数を undef に設定する以外に、MySQL データベースで適切に割り当てられた NULL を取得する方法はありません。初期化されていない値の警告をオフにする必要がありますか?

4

1 に答える 1

3

あなたはおそらくやっています

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

この場合、$xが。の場合、NULLではなく空の文字列を挿入します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 に答える