バイナリデータはアスキーコードのシングルクォート「'」を含んでいる可能性があり、これが SQL文 (MySQL) のリテラルを表すためにエスケープする必要が出てくる。以下のように prepare → execute というように2行に分ければ execute の中で prepare の ? を埋め込んでくれるからシングルクォートの問題は考えなくてよくなる。
使用するモジュール
use DBI;
# 要 DBD::MySQL
#!/usr/bin/perl
use DBI;
$TABLE_NAME = 'テーブル名';
$DB = DBI->connect(...);
my $sth = $DB->prepare(qq|INSERT INTO $TABLE_NAME (
`id`,
`mimetype`,
`object`,
`created`,
`updated`
)
VALUES (?, ?, ?, ?, ?)|
);
$sth->execute(
$id,
$miemetype,
$object,
$NOW,
$NOW
);
$DB->disconnect();
1;
トラックバック URL:
https://perltips.twinkle.cc/trackback/7