mysqlite,在perl中插入数据和特殊字符的情况

Gor*_*don 0 mysql perl

我在我的sqlite数据库中插入来自perl的数据.

这是我的编码:

如果我的值具有引号等特殊字符,我该如何使这个案例工作?

sub ADDROWDATATODATABASE
{
    my $dbh1 = $_[0];
    my $table = $_[1];
    my @DATA = @{$_[2]};
    my $string = ();
    foreach (@DATA) { $string .= "'$_',"; } $string =~ s/,$//; 

    $dbh1->do(qq|insert into $table values(NULL,$string);|); 

    my $date = `date`;
    print "[MYSQLITE_ADDROW.pl] $date : ADDING DATA INTO DATABASE <p>";
}
Run Code Online (Sandbox Code Playgroud)

mob*_*mob 8

使用占位符和绑定值.这样也可以使您的程序更安全.

my $statement = $dbh->prepare("insert into $table VALUES(NULL, ?,?,?,?)");
$statement->execute(@DATA);
Run Code Online (Sandbox Code Playgroud)

假设元素的数量@DATA仅在运行时已知(并且它是正确的元素数$table),您可以使用

my $statement = $dbh->prepare("insert into $table VALUES(NULL" . ",?"x@DATA . ")";
$statement->execute(@DATA);
Run Code Online (Sandbox Code Playgroud)

确保该声明具有正确数量的占位符.