我正在使用SQLite DB,每当我尝试将参数值绑定到语句中时,我都会收到错误。
这是一段代码:
my $sth = $dbh->prepare("SELECT UserId,UserName,CardNo,GroupId,Role,VerifyType FROM
UsersList limit ?,? ");
$sth->bind_param(1, undef,SQL_VARCHAR);
$sth->bind_param(2, undef,SQL_VARCHAR);
$sth->execute($page,$results_per_page);
这是错误:
ERROR: DBD::SQLite::st execute failed: datatype mismatch at line 68.
任何人都可以帮帮我,让我知道我应该用什么数据类型代替SQL_VARCHAR?
答案 0 :(得分:5)
看起来您使用的是bind_param()
错误。看一下这个例子:
use DBI qw(:sql_types); # Don't forget this
my $sth = $dbh->prepare(q{
SELECT bar FROM foo GROUP BY bar HAVING count(*) > ?;
});
$sth->bind_param(1, 5, SQL_INTEGER);
$sth->execute();
即:execute()
没有参数,而bind_param()
来电的价值也是如此。
答案 1 :(得分:1)
限制是整数而不是文本,所以我猜SQL_INTEGER
可能是首先尝试的事情吗?
答案 2 :(得分:0)
my $sql = "INSERT INTO table
(name, age)
VALUES
('$name', ?);
$sth = $dbh->prepare($sql);
#if not $age insert NULL value
$sth->execute($age ? $age : undef);