如何将Perl变量插入Sqlite3

use*_*663 0 sqlite perl

我想使用Perl DBI将值插入到Sqlite3表中.我能够毫无问题地插入硬编码值.当我尝试使用perl变量时,我得到一个错误"DBD :: SQLite :: db do failed:no such column:"

这有效:

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

但是这段代码

$dbh->do("INSERT INTO Gene values (NULL, $sequence, $siteNumber, $begin, $length)");
Run Code Online (Sandbox Code Playgroud)

抛出错误

DBD::SQLite::db do failed: no such column
Run Code Online (Sandbox Code Playgroud)

Bor*_*din 7

您应该始终prepareexecuteSQL语句一起使用占位符作为变量值.

试试这个代码

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