首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用perl DBI在数据库中插入带有单引号(‘)的数组

用perl DBI在数据库中插入带有单引号(‘)的数组
EN

Stack Overflow用户
提问于 2016-03-04 07:28:24
回答 1查看 448关注 0票数 0

我试图在数据库中插入一个数组,我的查询如下:

DBD::mysql::st执行失败:在main.pl第114行第7行需要3个绑定变量时,使用8个绑定变量调用。

代码语言:javascript
复制
my $sql_in = "INSERT INTO $table VALUES(?,?,?,'','','','')";
my $stmt_in = $dbh->prepare($sql_in) or die "Couldn't prepare statement: ".$dbh->errstr;
$stmt_in->execute($q_num,$datatype,@qq) or die "Couldn't execute statement:".$stmt_in->errstr;
$stmt_in->finish;

@qq包含以下测试:

据报道,其“许多问题之一”是最近“女性服装销售持续低迷”,这家七家商店的零售商表示,将在其所有门店开始为期三个月的清算销售。(A)它的许多问题是最近的(B)它的许多问题是最近的(C)它的许多问题是最近的(D)它们的许多问题是最近的(E)它们的许多问题是最近的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-04 08:34:02

在执行查询时,每个SQL参数(?)必须准确地接收一个值。数组@qq包含多个值。基于错误消息,数组必须包含六个元素。

查看您的查询,我猜您希望数组的整个内容进入一个字段。如果是这样的话,您应该能够使用

代码语言:javascript
复制
$stmt_in->execute($q_num,$datatype, join("\n", @qq)) or die...

为此,可能需要将\n替换为您希望插入到数组值之间的另一个字符/字符串。

或者,如果只想在数组中插入第一个元素(可能是这样,因为问题只显示单个元素),请使用

代码语言:javascript
复制
$stmt_in->execute($q_num,$datatype,$qq[0]) or die...

如果要插入所有数组元素并将每个元素放入表中的单独字段中,则需要使用适当数量的占位符构造查询,如果数组的大小是可变的,则最有可能的方法是使用join(', ', ('?') x @qq)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35790365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档