Как я могу связать значения параметра в операторе SQL, используя Perl? - PullRequest
1 голос
/ 01 октября 2010

Я использую базу данных SQLite, и всякий раз, когда я пытаюсь связать значения параметра в операторе, я получаю сообщение об ошибке.

Вот фрагмент кода:

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 ]

5 голосов
/ 01 октября 2010

Похоже, вы используете 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 голос
/ 01 октября 2010

Пределы являются целыми числами, а не текстом, так что я бы предположил, что SQL_INTEGER может быть первым делом попробовать?

0 голосов
/ 27 марта 2013
my $sql = "INSERT INTO table 
                       (name, age)
           VALUES 
                       ('$name', ?);

$sth = $dbh->prepare($sql);

#if not $age insert NULL value 
$sth->execute($age ? $age : undef); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...