我试图在数据库中插入一个数组,我的查询如下:
DBD::mysql::st执行失败:在main.pl第114行第7行需要3个绑定变量时,使用8个绑定变量调用。
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)它们的许多问题是最近的
发布于 2016-03-04 08:34:02
在执行查询时,每个SQL参数(?)必须准确地接收一个值。数组@qq包含多个值。基于错误消息,数组必须包含六个元素。
查看您的查询,我猜您希望数组的整个内容进入一个字段。如果是这样的话,您应该能够使用
$stmt_in->execute($q_num,$datatype, join("\n", @qq)) or die...为此,可能需要将\n替换为您希望插入到数组值之间的另一个字符/字符串。
或者,如果只想在数组中插入第一个元素(可能是这样,因为问题只显示单个元素),请使用
$stmt_in->execute($q_num,$datatype,$qq[0]) or die...如果要插入所有数组元素并将每个元素放入表中的单独字段中,则需要使用适当数量的占位符构造查询,如果数组的大小是可变的,则最有可能的方法是使用join(', ', ('?') x @qq)。
https://stackoverflow.com/questions/35790365
复制相似问题