请求sql"更新" in perl

时间:2015-05-06 22:31:06

标签: sql perl

我有一个包含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]);
}}

3 个答案:

答案 0 :(得分:1)

您确定numCompares指向正确的数据库吗?

确保您已启用$db5strict

此外,要进一步诊断并查看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)

如果参数化更新不起作用,请尝试直接构造最终语句并将其打印出来进行调试。