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数据库表。

