我正在尝试向 pSQL 表中插入一行,同时指定键和值作为占位符:
my @keys = keys %db_entr;
my @vals = values %db_entr;
my @items = (@keys, @values);
my $dbh = DBI->connect("DBI:Pg:dbname=testdb;host=localhost", "username", 'password', {'RaiseError' => 1});
my $sth = $dbh->prepare("INSERT INTO grid ( ?, ?, ? ) values ( ?, ?, ? )");
my $rows = $sth->execute(@items);
print "$rows effected\n";
但是,无论我做什么,这都会给我一个错误:
DBD::Pg::st execute failed: ERROR: syntax error at or near "$1"
LINE 1: INSERT INTO grid ( $1, $2, ...
^ at ./file.pl line 262, <STDIN> line 11.
有没有人知道我可能做错了什么?
最佳答案
您不能像这样对列名使用占位符:
INSERT INTO grid (?, ?, ?) VALUES (?, ?, ?)
您必须明确指定列名,并且只能对值使用占位符:
INSERT INTO grid (x, y, z) VALUES (?, ?, ?)
关于perl - 如何使用 Perl、DBI 和占位符插入到 PostgreSQL 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14212567/