簡體   English   中英

如何將Perl變量插入Sqlite3

[英]How to insert Perl variables into Sqlite3

我想使用Perl DBI將值插入Sqlite3表。 我能夠毫無問題地插入硬編碼值。 當我嘗試使用perl變量時,出現錯誤“ DBD :: SQLite :: db失敗:沒有這樣的列:”

這有效:

$dbh->do("insert into Gene values (12, 'AAAAAA', 66, 86, 76)");

但是這段代碼

$dbh->do("INSERT INTO Gene values (NULL, $sequence, $siteNumber, $begin, $length)");

引發錯誤

DBD::SQLite::db do failed: no such column

當然,您應該始終prepareexecute SQL語句,並對變量值使用占位符。

試試這個代碼

my $sth = $dbh->prepare('INSERT INTO Gene VALUES (?, ?, ?, ?, ?)');
$sth->execute(undef, $sequence, $siteNumber, $begin, $length);

您的問題將出在$ sequence上,這需要在insert語句中引用有效的SQL字符串文字。 結果,它以為您嘗試引用的是稱為AAAAAA的列,而不是您想要的字符串“ AAAAAA”。 Perl的字符串內插不會為您添加引號。

占位符和$ dbh-> prepapre是到目前為止最可靠的解決方案(例如,如果您的字符串包含引號''$ dbh-> prepare已經正確編碼了,該怎么辦)。

暫無
暫無

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

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