Mysql 使用perl DBI在数据库中插入带有单引号(';)的数组
我正在尝试向数据库中插入一个数组,我的查询如下: DBD::mysql::st execute失败:在main.pl第114行第7行需要3个绑定变量时,使用8个绑定变量调用。Mysql 使用perl DBI在数据库中插入带有单引号(';)的数组,mysql,perl,Mysql,Perl,我正在尝试向数据库中插入一个数组,我的查询如下: DBD::mysql::st execute失败:在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_
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包含以下测试:
报告称,@其众多问题中的一个是最近的@extended问题
这家七店零售商表示,女装销售将大幅下滑
在其所有门店开始为期三个月的清算销售。
(A) 它的许多问题是最近发生的
最近(C)它的许多问题是最近(D)他们的许多问题
他们的许多问题都是最近才出现的
执行查询时,每个SQL参数(?
)必须只接收一个值。数组@qq
包含多个值。根据错误消息,数组必须包含六个元素
查看您的查询,我猜您希望将数组的全部内容放入单个字段中。如果是这样,您应该能够使用
$stmt_in->execute($q_num,$datatype, join("\n", @qq)) or die...
要实现这一点,可以将\n
替换为要插入数组值之间的另一个字符/字符串
或者,如果只想在数组中插入第一个元素(可能是这样,因为问题只显示单个元素),请使用
如果要将所有数组元素插入表中的一个单独字段,则需要使用正确数量的占位符构造查询,如果数组大小可变,则最有可能使用join(',',('?')x@qq)
。每个SQL参数(?
)执行查询时必须只接收一个值。数组@qq
包含多个值。根据错误消息,数组必须包含六个元素
查看您的查询,我猜您希望将数组的全部内容放入单个字段中。如果是这样,您应该能够使用
$stmt_in->execute($q_num,$datatype, join("\n", @qq)) or die...
要实现这一点,可以将\n
替换为要插入数组值之间的另一个字符/字符串
或者,如果只想在数组中插入第一个元素(可能是这样,因为问题只显示单个元素),请使用
如果要插入所有数组元素,并且每个元素都要插入到表中的单独字段中,则需要使用正确数量的占位符构造查询,最有可能的方法是使用
join(',',('?')x@qq)
如果数组的大小是可变的。您能显示创建@qq
的实际代码吗请显示错误消息说@qq
有8个值,应该包含3个值。我们知道它应该包含3个,因为premare语句中有3个问号。但我们无法从您的描述中判断它实际包含多少值,也无法判断prepare语句是否正确。您的表$table
的列名是什么?“@qq包含以下测试”-这不是很有用@qq
是一个数组,您告诉我们它包含一个标量值。此文本是否在@qq
的各个元素之间分割?都在$qq[0]
中吗?@qq
的其他元素中是否有其他值?我改变了方法,但为了理解:@qq包含6个元素(6行)。能否显示创建您的@qq
的实际代码?错误消息说@qq
有8个值,应该包含3个。我们知道它应该包含3个,因为premare语句中有3个问号。但我们无法从您的描述中判断它实际包含多少值,也无法判断prepare语句是否正确。您的表$table
的列名是什么?“@qq包含以下测试”-这不是很有用@qq
是一个数组,您告诉我们它包含一个标量值。此文本是否在@qq
的各个元素之间分割?都在$qq[0]
中吗?@qq
的其他元素中是否有其他值?我改变了方法,但为了理解:@qq包含6个元素(6行)。我使用了用特殊字符替换所有“\n”的方法。这起作用了。感谢您在回答中提供不同的选项。我使用了用特殊字符替换所有“\n”的方法。这起作用了。感谢您在回答中提供不同的选项。