我有一个包含sql更新查询类型的perl脚本,但我不能导致结果,我打破了头3天,我还没找到解决方案,有人帮助我
my $sth = $db->prepare('select idS from ocs.Storage where name like ? ');
$sth->bind_param(1,"$v4");
$sth->execute();
if ($sth->rows < 0)
{
print " sorry";
}
else
{
#print "found \n",$sth->rows;
while (my $results = $sth-> fetchrow_hashref)
{
$idSt = $results->{idS};
print "idst est $idSt et vm name est $test3[$d]";
$idSt=~ s/^\s+|\s+$//;
$idSt=~ s/\'//g;
$idSt=~ s/\'//g;
$idSt=~ s/\"//g;
$idSt=~ s/^\s+//;
$idSt=~ s/\s+$//;
my $null=0;
$idSt=$idSt +$null;
my $statement1 = "UPDATE VM SET stoaregeA_id = ? where VM_OS = ?";
$db5->do($statement1,undef,$idSt,$test3[$d]);
}}
答案 0 :(得分:1)
您确定numCompares
指向正确的数据库吗?
确保您已启用$db5
和strict
。
此外,要进一步诊断并查看warnings
上实际运行的查询,请运行以下SQL命令:
mysql
答案 1 :(得分:1)
尝试为您的代码添加更多检查,看看是否能为您提供更多支持。另请告诉我们$test3[$d]
和$db5
是什么。
还包括您的表格说明。可能会有一些可以给我们提供线索的东西。
my $sth = $db->prepare('SELECT idS FROM ocs.Storage WHERE name LIKE ?')
or die("Error preparing: " . $db->errstr);
$sth->bind_param(1, "$v4");
$sth->execute
or die("Error executing: " . $sth->errstr);
if ($sth->rows < 0) {
print " sorry";
} else {
while (my $results = $sth->fetchrow_hashref) {
$idSt = $results->{idS};
print "idst est $idSt et vm name est $test3[$d]";
$idSt=~ s/^\s+|\s+$//;
$idSt=~ s/\'//g;
$idSt=~ s/\'//g;
$idSt=~ s/\"//g;
$idSt=~ s/^\s+//;
$idSt=~ s/\s+$//;
my $null = 0;
$idSt = $idSt + $null;
my $stmt = 'UPDATE VM SET stoaregeA_id = ? WHERE VM_OS = ?';
$db5->do($stmt, undef, $idSt, $test3[$d])
or die("Error doing: " . $db5->errstr);
}
}
答案 2 :(得分:0)
如果参数化更新不起作用,请尝试直接构造最终语句并将其打印出来进行调试。