Perl MySQL插入数据
简介:在本教程中,我们将逐步向您展示如何使用Perl DBI将数据插入表中。
我们将使用在Perl MySQL创建表教程中创建的链接表。
如果您尚未创建链接表,强烈建议您在继续本教程之前先创建它。
要使用Perl DBI将新行插入表中,您需要执行以下步骤:
通过调用数据库句柄对象的prepare()方法来解析INSERT语句。
prepare()方法返回一个语句句柄对象,该对象代表MySQL数据库中的一条语句。
在此步骤中,Perl DBI验证INSERT语句以确保其有效。
如果INSERT语句中有错误,例如,它引用了不存在的表,或者它是无效的SQL语句,则prepare()语句返回值undef。
另外,Perl将错误消息填充到$ DBI :: errstr变量中。通过调用语句句柄对象的execute()方法来执行INSERT语句。
在此步骤中,Perl在MySQL数据库中执行INSERT语句。
execute()方法在成功时返回true,在失败时返回undef的值。
在失败的情况下,如果启用了RaiseError属性,Perl也会通过die()函数引发异常以立即中止脚本。
请注意,您可以使用以下步骤执行UPDATE或DELETE语句。
Perl MySQL INSERT示例
以下脚本允许您将数据插入链接表:
#!/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; }
这个怎么运作。
首先,我们创建了一个名为get_links()的新子例程,以从用户输入中获取链接的信息。
get_links()子例程以数组形式返回链接列表。接下来,我们连接到perlmysqldb数据库。
然后,我们准备了一个INSERT语句,该语句将数据插入到链接表中。
问号(?)是占位符,将由title,url和target的相应值替换。
我们将INSERT语句传递给prepare()方法以准备执行。之后,我们迭代@links数组并执行INSERT语句。
我们显示了一条消息,用于指定是否将数据成功插入到链接表中。最后,我们通过调用数据库句柄对象的disconnect()方法与MySQL数据库断开连接。
下面说明了当我们在链接表中插入4行时的输出。
Perl MySQL INSERT Demo title: MySQL Tutorial url: httpx://www.theitroad.local/ target: _self Do you want to insert another link? (Y/N)?Y title: Perl MySQL Insert Demo url: httpx://www.theitroad.local/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://theitroad.local/ inserted successfully link https://www.theitroad.local/perl-mysql/perl-mysql-insert/ inserted successfully link http://www.perl.org inserted successfully link http://www.mysql.com inserted successfully
我们可以检查链接表以验证插入操作:
SELECT * FROM links;
在本教程中,您学习了如何使用Perl DBI将数据插入MySQL数据库表。