如何使用Perl绑定SQL语句中的参数值?

时间:2010-10-01 09:53:18

标签: perl sqlite

我正在使用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?

3 个答案:

答案 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);