Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用perl DBI在数据库中插入带有单引号(';)的数组_Mysql_Perl - Fatal编程技术网

Mysql 使用perl DBI在数据库中插入带有单引号(';)的数组

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_

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

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_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”的方法。这起作用了。感谢您在回答中提供不同的选项。