Я пишу скрипт Perl, который использует DBI для подключения к базе данных MySQL. Я пытаюсь сделать fetch
столбец, который является значением умножения SUM(amount, 365)
в MySQL, код работает, а также в Perl код работает для SUM(amount)
Мои мысли в том, что умножение выдает другой тип значения, который я не могу прочитать через мой метод. Я мог бы уйти, хотя, все еще довольно новый для Perl.MySQL muliplication output и Perl DBI
Вот код
my ($sum, $sum365);
$sth = $dbh->prepare ("
SELECT SUM(amount), SUM(amount) * 365)
FROM spending
");
$sth->execute()
or die "cannot execute\n";
$sth->bind_col(1, \$sum);
$sth->bind_col(2, \$sum365);
while ($sth->fetch){
print "$sum\n";
print "$sum365\n";
}
Другая работа вокруг, я имею в виду, есть ли способ иметь Perl прочитать значение как числовой? Тогда я мог бы просто создать другую переменную $sum365 = $sum * 365
. Я тоже это пробовал, но Perl не читает значение как числовое.
Также я знаю, что существуют разные методы в Perl до fetch
из базы данных array
, arrayref
и т. Д. Есть ли другой способ, который будет работать и почему?
Я бы рекомендовал включение [RaiseError], который будет выдавать ошибку для каждого метода DBI, а не на ту, которые вы не забудьте проверить. 'DBI-> connect (..., {RaiseError => 1})'; – Schwern
О, добрый совет, это даст конкретные ошибки? Например, с предупреждением он скажет мне, что произошла ошибка в строке 'prepare'. Будет ли 'RaiseError => 1' указать точную причину? В этом случае ошибки не было, но это просто дало мне пустой результат, и именно поэтому я думал, что Perl не смог прочитать результат. Я тоже могу читать дальше – nzaleski
Странно, что казнь не умерла. RaiseError предоставит вам такое же сообщение об ошибке, как [$ DBI :: errstr] (https://metacpan.org/pod/DBI#errstr), которое будет представлять собой сообщение об ошибке из MySQL. Это должно быть что-то вроде 'prepare failed: near") ". – Schwern