Доброго времени суток!!!
Perl должен складывать данные в mysql базу
вроде всё поставил все модули перлу (которые он просил). Но он никак не хочет отрабатывать - ругается на строке $sth->execute();
ошибка вот такая: Can't call method "execute" on an undefined value at /home/user/insert_base.pl line 25
переменные разные...
используй
#!/usr/bin/perl -w
и
use strict;
для отлова таких ситуаций
помогло отловить пару синтаксических ошибок и заставило обьявить my ($ip, $utc_time, $input_traff, $ip_in, $sth,);
И снова Can't call method "execute" on an undefined value at /home/user/insert_base.pl line
Объясните plz что значит разные переменные
prepare используется тогда, когда нужен возврат данных из БД.
В данном примере выполнение запроса INSERT вернет 0 или 1.
При этом prepare использует больше ресурсов и занемает больше времени чем do.
Строчки
$sht = $dbh->prepare($sql_stmnt);
$sth->execute();
$sth->finish;
заменяется на
$dbh->do($sql_stmnt) or die "невозможно выполнить запрос :$!\n";
prepare используется тогда, когда нужен возврат данных из БД.
В данном примере выполнение запроса INSERT вернет 0 или 1.
При этом prepare использует больше ресурсов и занемает больше времени чем do.
неверно
при prepare разбор запроса производится только 1 раз, а дальше только подставляются цифры, а для do разбор запроса сервером делается на КАЖДОМ запросе.
поэтому для разового действия - лучше do, для внесения таблицы - prepare
ps я когда переносил таблицы по несколько тысяч записей из dbf в Oracle, получал разницу в быстродействии более чем на порядок (конвертор писал на перле для удобства преобразования данных, т.к. они довольно сильно структурно различались)
phenom x4 905e, asus m4a79 deluxe, 4 gb, ati x550, ati 4350, 2 x 17" LCD