Мы будем использовать таблицу links, созданную в статье по созданию таблиц в MySQL. Если вы еще не создали таблицу links, мы настоятельно рекомендуем создать ее перед тем, как приступить к изучению этой статьи.
Чтобы вставить новую строку в таблицу с помощью Perl DBI, вам необходимо выполнить следующие шаги:
- Разобрать оператор INSERT, вызвав метод prepare() объекта дескриптора базы данных. Метод prepare() возвращает операторный дескриптор объекта , который представляет заявление в базе данных MySQL. На этом шаге Perl DBI проверяет оператор INSERT, чтобы убедиться, что он действителен. Если в операторе INSERT есть какая-либо ошибка, например, она ссылается на несуществующую таблицу или является недопустимым оператором SQL, оператор prepare() возвращает значение undef. Кроме того, Perl заполняет сообщение об ошибке в переменной $DBI::errstr.
- Выполните оператор INSERT, вызвав метод execute() объекта дескриптора оператора. На этом этапе Perl выполняет инструкцию INSERT в базе данных MySQL. В метод execute() возвращает true на успех и значение undef в случае неудачи. В случае сбоя Perl также вызывает исключение через функцию die(), чтобы немедленно прервать сценарий, если атрибут RaiseError включен.
Обратите внимание, что вы можете выполнить инструкцию UPDATE или DELETE , используя эти шаги.
Пример вставки Perl MySQL
Следующий скрипт позволяет вставлять данные в таблицу ссылок:
#!/usr/bin/perl use strict; use warnings; use v5.10; # для функции say() use DBI; # конфигурации базы данных MySQL my $dsn = "DBI:mysql:perlmysqldb"; my $username = "root"; my $password = ''; say "Демонстрация вставки в MySQL с помощью Perl"; # получить входные ссылки пользователя my @links = get_links(); # подключение к базе данных MySQL my %attr = (PrintError=>0,RaiseError=>1 ); my $dbh = DBI->connect($dsn,$username,$password,\%attr); # вставка данных в таблицу ссылок my $sql = "INSERT INTO links(title,url,target) VALUES(?,?,?)"; my $stmt = $dbh->prepare($sql); # выполнение запроса foreach my $link(@links){ if($stmt->execute($link->{title}, $link->{url}, $link->{target})){ say "link $link->{url} вставлено успешно"; } } $stmt->finish(); # отключитесь от базы данных MySQL $dbh->disconnect(); sub get_links{ my $cmd = ''; my @links; # получение ссылок из командной строки my($title,$url,$target); # повторно запрашивать данные ссылки из командной строки do{ say "title:"; chomp($title = <STDIN>); say "url:"; chomp($url = <STDIN>); say "target:"; chomp($target = <STDIN>); # my %link = (title=> $title, url=> $url, target=> $target); push(@links,\%link); print("\nВы хотите вставить еще одну ссылку? (Y/N)?"); chomp($cmd = <STDIN>); $cmd = uc($cmd); }until($cmd eq 'N'); return @links; }
Как это работает.
- Сначала мы создали новую подпрограмму, которая вызывается get_links() для получения информации о ссылке от ввода пользователя. Подпрограмма get_links() возвращает список ссылок, как массив.
- Далее мы подключились к базе данных perlmysqldb.
- Затем мы подготовили оператор INSERT, который вставляет данные в таблицу links. Знаки вопроса ( ?) – это заполнители, которые будут заменены соответствующими значениями title, url и target. Мы передали заявление INSERT в метод prepare() подготовки исполнения.
- После этого мы повторили массив @links и выполнили оператор INSERT. Мы отобразили сообщение, чтобы указать, были ли данные вставлены в таблицу links успешно.
- Наконец, мы отключились от базы данных MySQL, вызвав метод disconnect() объекта дескриптора базы данных.
Следующее иллюстрирует вывод, когда мы вставили 4 строки в таблицу links.
Демонстрация вставки в MySQL с помощью Perl
title: MySQL url: http://andreyex.ru/ target: _self Вы хотите вставить еще одну ссылку? (Y/N)?Y title: Демонстрация вставки в MySQL с помощью Perl url: http://www.andreyex.ru/.../perl-mysql-insert/ target: _blank Вы хотите вставить еще одну ссылку? (Y/N)?Y title: Perl url: http://www.perl.org target: _blank Вы хотите вставить еще одну ссылку? (Y/N)?Y title: MySQL url: http://www.mysql.com target: _self Вы хотите вставить еще одну ссылку? (Y/N)?N link http://andreyex.ru/ вставлено успешно link http://www.andreyex.ru/perl-mysql/perl-mysql-insert/ вставлено успешно link http://www.perl.org вставлено успешно link http://www.mysql.com вставлено успешно
Мы можем проверить таблицу links, чтобы проверить операции вставки:
SELECT * FROM links;
Из этой статьи вы узнали, как использовать Perl DBI для вставки данных в таблицу базы данных MySQL.