Resumo : neste tutorial mostraremos passo a passo como inserir dados em uma tabela usando Perl DBI.
Usaremos a links
tabela criada no tutorial de criação de tabelas Perl MySQL . Se você ainda não criou a links
tabela, recomendamos fortemente que você a crie antes de prosseguir com este tutorial.
Para inserir uma nova linha em uma tabela usando Perl DBI, você precisa executar as seguintes etapas:
- Analise a instrução INSERT chamando o método prepare() do objeto identificador do banco de dados. O método prepare() retorna um objeto identificador de instrução que representa uma instrução no banco de dados MySQL. Nesta etapa, Perl DBI valida a instrução INSERT para garantir que ela seja válida. Se houver um erro na
INSERT
instrução, por exemplo, ela faz referência a uma tabela inexistente ou é uma instrução SQL inválida, aprepare()
instrução retorna um valor deundef
. Além disso, Perl preenche a mensagem de erro na$DBI::errstr
variável. - Execute a
INSERT
instrução chamando oexecute()
método do objeto identificador da instrução. Nesta etapa, Perl executa aINSERT
instrução no banco de dados MySQL. Oexecute()
método retornatrue
em caso de sucesso e um valorundef
em caso de falha. Em caso de falha, Perl também gera uma exceção por meio dadie()
função para abortar o script imediatamente se oRaiseError
atributo estiver habilitado.
Observe que você pode executar a instrução UPDATE ou DELETE usando estas etapas.
Exemplo de INSERT em Perl MySQL
O script a seguir permite inserir dados na tabela de links:
#!/usr/bin/perl
use strict;
use warnings;
use v5.10; # for say() function
use DBI;
# MySQL database configurations
my $dsn = "DBI:mysql:perlmysqldb";
my $username = "root";
my $password = '';
say "Perl MySQL INSERT Demo";
# get user's input links
my @links = get_links();
# connect to MySQL database
my %attr = (PrintError=>0,RaiseError=>1 );
my $dbh = DBI->connect($dsn,$username,$password,\%attr);
# insert data into the links table
my $sql = "INSERT INTO links(title,url,target)
VALUES(?,?,?)";
my $stmt = $dbh->prepare($sql);
# execute the query
foreach my $link(@links){
if($stmt->execute($link->{title}, $link->{url}, $link->{target})){
say "link $link->{url} inserted successfully";
}
}
$stmt->finish();
# disconnect from the MySQL database
$dbh->disconnect();
sub get_links{
my $cmd = '';
my @links;
# get links from the command line
my($title,$url,$target);
# repeatedly ask for link data from command line
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("\nDo you want to insert another link? (Y/N)?");
chomp($cmd = <STDIN>);
$cmd = uc($cmd);
}until($cmd eq 'N');
return @links;
}
Linguagem de código: Perl ( perl )
Como funciona.
- Primeiro, criamos uma nova sub-rotina chamada
get_links()
para obter informações do link a partir da entrada do usuário. Aget_links()
sub-rotina retorna uma lista de links como um array. - Em seguida, nos conectamos ao
perlmysqldb
banco de dados. - Em seguida, preparamos uma
INSERT
instrução que insere dados nalinks
tabela. Os pontos de interrogação (?
) são os espaços reservados que serão substituídos pelos valores correspondentes de título, URL e destino. Passamos aINSERT
instrução para oprepare()
método de preparação da execução. - Depois disso, iteramos o
@links
array e executamos aINSERT
instrução. Exibimos uma mensagem para especificar se os dados foram inseridos nalinks
tabela com sucesso. - Finalmente, nos desconectamos do banco de dados MySQL chamando o
disconnect()
método do objeto handle do banco de dados.
O seguinte ilustra a saída quando inserimos 4 linhas na links
tabela.
Perl MySQL INSERT Demo
title:
MySQL Tutorial
url:
httpx://tutorials.acervolima.com/
target:
_self
Do you want to insert another link? (Y/N)?Y
title:
Perl MySQL Insert Demo
url:
httpx://tutorials.acervolima.com/perl-mysql/perl-mysql-insert/
target:
_blank
Do you want to insert another link? (Y/N)?Y
title:
Perl
url:
httpx://www.perl.org
target:
_blank
Do you want to insert another link? (Y/N)?Y
title:
MySQL
url:
httpx://www.mysql.com
target:
_self
Do you want to insert another link? (Y/N)?N
link http://tutorials.acervolima.com/ inserted successfully
link https://tutorials.acervolima.com/perl-mysql/perl-mysql-insert/ inserted successfully
link http://www.perl.org inserted successfully
link http://www.mysql.com inserted successfully
Linguagem de código: PHP ( php )
Podemos verificar a links
tabela para verificar as operações de inserção:
SELECT * FROM links;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste tutorial, você aprendeu como usar Perl DBI para inserir dados em uma tabela de banco de dados MySQL.