Perl: 向mysql数据库插入二进制字段, 并返回所插入记录的自动增长字段的值

本文介绍了如何使用Perl编程语言向MySQL数据库的二进制字段插入数据,并在操作完成后获取新插入记录的自动增长ID值,这对于跟踪数据库中的唯一标识符至关重要。
摘要由CSDN通过智能技术生成
 
 

#! c:/perl/bin/perl.exe
use strict;
use warnings;
use Digest::MD5;
use DBI;
use DBD::mysql;

my $filePath = "D://malware//ixigua.exe";
my $fileLen = -s $filePath;
my $md5 = Digest::MD5->new();
open ( HFILE, "< $filePath" ) or die ("Can't open:$!");
binmode( HFILE );
$md5->addfile( *HFILE );
my $strMD5 = $md5->hexdigest(); #计算MD5值

seek( HFILE, 0, 0);  #调整文件指针至文件头,必需步骤
my $data;             #存放文件内容
my $len = read( HFILE, $data, $fileLen );
close( HFILE );

my $dbh = DBI -> connect("DBI:mysql:DB_AAA;host=192.168.22.252;user=ixigua;password=aaa123",{RaiseError=>1});
my $insertStr = "insert into `SIMPLE_BODY` ( SIMPLE_SIZE, SIMPLE_BODY) values( ?,?);"; #预留参数的位置
my $sth = $dbh->prepare( $insertStr ) or die("Cannot prepare statement:", $dbh->errstr(),"/n");
my $rc = $sth->execute($fileLen, $data) or die("Cannot execute statement:", $sth->errstr(), "/n");
my $id = $dbh->last_insert_id(undef,undef, "`SIMPLE_BODY`", "SIMPLE_BODY_KEY");
#前2个参数不用理会,第3个为数据表名,第4个具有自动增长属性的列名

print 'insert_id=',$id, "/n";

warn( $DBI::errstr ) if $DBI::err;
$dbh->disconnect();

================================================
注释若数据库插入语句不用参数预留操作就失败,原因没有找到?
my $insertStr = " insert into `SIMPLE_BODY` ( SIMPLE_SIZE, SIMPLE_BODY) values( $fileLen, $data);"; #不预留参数而直接填充
my $sth = $dbh-> prepare( $insertStr ) or die(" Cannot prepare statement:", $dbh->errstr()," /n");
my $rc = $sth-> execute() or die(" Cannot execute statement:", $sth->errstr(), " /n");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值