Это стандартный пример вставки из руководства DBI :
my $query = q{
INSERT INTO sales (product_code, qty, price) VALUES (?, ?, ?)
};
my $sth = $dbh->prepare($query) or die $dbh->errstr;
while (<>) {
chomp;
my ($product_code, $qty, $price) = split /,/;
$sth->execute($product_code, $qty, $price) or die ($query . " " . $dbh->errstr);
}
$dbh->commit or die $dbh->errstr;
Я немного изменил его, поэтому могу посмотреть, какой запрос завершился ошибкой ( die ($ query. "". $ dbh-> errstr)
). И все же хотелось бы увидеть запрос со связанными значениями (как он выполнялся). Как это получить?
Edit
Кстати, я нашел неудобный способ увидеть запрос со связанными значениями: вы должны сделать синтаксическую ошибку в запросе. Например, если я изменю приведенный выше запрос следующим образом:
my $query = q{
xINSERT INTO sales (product_code, qty, price) VALUES (?, ?, ?)
};
Я вернул его, как и хотел:
Выполнение DBD :: mysql :: st не выполнено:У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, чтобы найти правильный синтаксис для использования рядом с 'xINSERT INTO sample (product_code, qty, price) VALUES (' 1 ',' 2 ',' 3 ')' в строка 1
Иногда это действительно помогает. По крайней мере, со мной.