perl bash скрипт не вставляет sql запрос - PullRequest
0 голосов
/ 17 марта 2020

я хочу вставить запрос, но он не работает:

my $query1 = $db1->prepare("SELECT host, name, severity  FROM XX");  
my $query2 = $db2->prepare('UPDATE worldmap_table' . ' SET severity = ?, name = ? WHERE HOST = ?');

$query1->execute;

while (my @row = $query1->fetchrow_array) {
    $query2->execute($row[2]);
    print "$row[2]\n";
}

подготовительный запрос 3

my $query3 = $db1->prepare("SELECT host, name, severity
  FROM XX);

подготовительный запрос 4

my $query4 = $db2->prepare('UPDATE worldmap_table' . ' SET severity = 6, name = ? WHERE HOST = ?');

$query3->execute;

эта часть не работает

while (my @row2 = $query3->fetchrow_array) {
    $query4->execute($row2[2], $row2[1], $row2[0]);
    print "$row2[2], $row2[1], $row2[0] \n";
}

У меня есть эта ошибка:

DBD::mysql::st execute failed: called with 3 bind variables when 2 are needed at worldmap2.pl line 103.
DBD::mysql::st execute failed: called with 3 bind variables when 2 are needed at worldmap2.pl line 103.

1 Ответ

1 голос
/ 17 марта 2020

В запросе 4 есть два заполнителя:

my $query4 = $db2->prepare(
    'UPDATE worldmap_table' . ' SET severity = 6, name = ? WHERE HOST = ?'
    #                                                    ~              ~
);

Но вы вызываете его только с одним аргументом:

$query4->execute($row2[2]);
#                ~~~~~~~~

В сообщении об ошибке упоминаются разные числа, так что я думаю, Вы упростили код.

...