簡體   English   中英

mysqlite,在perl中插入數據和特殊字符

[英]mysqlite, inserting data and special character cases in 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>";
}

使用占位符並綁定值 這也將使您的程序免受SQL注入的侵害。

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

假設@DATA的元素數僅在運行時才知道(並且它是$table的正確元素數),可以使用

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

確保該語句具有正確的占位符數量。

您需要調用一個函數以“轉義”值。 如何執行取決於您實際使用的數據庫-MySQL和SQLite是不同的產品。

另外,您應該在INSERT語句中顯式命名列:

INSERT INTO Table (Col1, Col2) VALUES (Val1, Val2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM