PerlÖÐÒ»¸ö×î¿áµÄÄ£¿é¾ÍÊÇPerlÊý¾Ý¿â½Ó¿Ú(Perl Database Interface£¬¼ò³ÆDBI)¡£Í¨¹ýÌṩһϵÁÐÔÚÄÚ²¿ÉÏÄܹ»×ª»¯³ÉÔʼµ÷Óú¯ÊýµÄ¹¦ÄÜ£¬DBIÄ£¿éΪºÜ¶à²»Í¬µÄÊý¾Ý¿âÌṩÁËÒ»¸öͳһµÄ½Ó¿Ú¡£ÓÉ´Ë£¬Ê¹ÓÃPerl¾Í¿ÉÒÔºÜÈÝÒ×µØÀûÓÃÊý¾Ý¿âºÍ½¨Á¢¶¯Ì¬WebÍøÒ³¡£
µ±Ç°£¬MySQLÊǹ㷺ÓÃÓÚWebÍøÕ¾¿ª·¢µÄÊý¾Ý¿â£¬ËüÊÇÒ»ÖÖÃâ·Ñ¡¢¿ªÔ´µÄSQL²Ù×÷¡£±¾ÆÚÎÒÃǽ«½²Êöµ½ÈçºÎʵÏÖPerlÓëMySQLÏ໥ͨѶµÄ²Ù×÷£¬½«ÎªÄã½éÉÜÓÉDBIÌṩµÄÖØÒª·½·¨£¬ÔÚ¿ª·¢¹ý³ÌÖн²Êöµ½Ò»¸ö¼òµ¥µÄ½Å±¾Ä£°å¡£ÕâÒ»²Ù×÷µÄǰÌáÊǼÙÉèÄãµÄϵͳÒѾ°²×°ÁËMySQLºÍPerl¡£
ÏÂÔØºÍ°²×°
¿ªÊ¼£¬ÏÂÔØ²¢°²×°Perl DBIÄ£¿éºÍMySQL DBD¡£Í¨¹ýÔÚPerl ÃüÁîÐÐÖÐÔËÐÐÒÔÏÂÃüÁî¼´¿ÉÍê³É°²×°¹ý³Ì£º
perl> perl -MCPAN -e "install DBI"
perl> perl -MCPAN -e "install DBD::mysql"
×¢Ò⣺Äã¿ÉÒÔÊÖ¶¯ÏÂÔØºÍ°²×°DBIºÍMySQL DBD¡£
ÏÖÔÚPerl DBIºÍMySQL DBDÓ¦¸Ã°²×°ÔÚÄãµÄϵͳÖС£
È»ºó£¬Í¨¹ýÔÚMySQLÓû§¶ËÃüÁîÐÐÊäÈëÒÔÏÂÃüÁÒÔ½¨Á¢Ò»¸öÓÃÓÚSQL²éѯµÄ±í¸ñ¡£
mysql> CREATE TABLE users (id INT(4) PRIMARY KEY, username VARCHAR(25), country VARCHAR(2));
Query OK, 0 rows affected (0.11 sec)
mysql> INSERT INTO users VALUES (1, 'john', 'IN'), (2, 'tom', 'US'), (3, 'layla', 'US');
Query OK, 3 rows affected (0.11 sec)
Records: 3 Duplicates: 0 Warnings: 0
Ò»µ©½¨Á¢±í¸ñ£¬¼ÌÐøÊ¹ÓÃDBI·½·¨½¨Á¢Ò»¸ö½Å±¾Ä£°å(¼û±íA)¡£
±íA
#!/bin/perl
# load module
use DBI;
# connect
my $dbh = DBI->connect("DBI:mysql:database=db2;host=localhost", "joe", "guessme", {'RaiseError' => 1});
# execute INSERT query
my $rows = $dbh->do("INSERT INTO users (id, username, country) VALUES (4, 'jay', 'CZ')");
print "$rows row(s) affected ";
# execute SELECT query
my $sth = $dbh->prepare("SELECT username, country FROM users");
$sth->execute();
# iterate through resultset
# print values
while(my $ref = $sth->fetchrow_hashref()) {
print "User: $ref-> ";
print "Country: $ref-> ";
print "---------- ";
}
# clean up
$dbh->disconnect();
Ëĸö²½Öè
µ±Ê¹ÓÃPerl DBIÖ´ÐÐÒ»¸öSQL ²éѯʱ£¬Çë×ñÑËĸö¼òµ¥µÄ²½Ö裺
1. ¿ªÊ¼Ê±£¬Í¨¹ýµ÷ÓÃconnect() ·½·¨³õʼ»¯Êý¾Ý¿âµÄ¾ä±ú¡£connect() ·½·¨½ÓÊÕÁ¬½Ó²ÎÊý²¢×÷Ϊ×Ö·û´®£¬°üÀ¨Êý¾Ý¿âÀàÐÍ("mysql")£¬Ö÷»úÃû³Æ("localhost")£¬ÒÔ¼°Êý¾Ý¿âÃû³Æ("db2")¡£Êý¾Ý¿âÃû³Æ("joe")ºÍÃÜÂë("guessme")×÷ΪµÚ¶þºÍµÚÈý¸ö±äÁ¿Ìṩ¸øconnect() ·½·¨¡£
2. ½¨Á¢SQL²éѯ×Ö·û´®£¬²¢Ê¹ÓÃdo()»òprepare()ÒÔ¼°execute()·½·¨Ö´ÐвéѯÓï¾ä¡£do()·½·¨ÊÇÕë¶ÔÓÚÒ»´ÎÐÔʹÓõÄINSERT£¬UPDATE»òÕßDELETE²éѯ£¬µ«prepare()ºÍexecute()·½·¨Õë¶ÔµÄÊÇSELECT²éѯ¡£Ê¹ÓÃÕâЩ·½·¨µÃµ½µÄ¶ÔÏó½«ÓÐËù²»Í¬£¬ÕâÈ¡¾öÓÚ²éѯµÄÀàÐÍ£¬²éѯ½á¹ûÊÇ·ñ³É¹¦Ò²ÊÇÈç´Ë¡£³É¹¦µÄSELECT²éѯ½«·µ»ØÒ»¸ö½á¹û¶ÔÏ󣬳ɹ¦µÄINSERT/UPDATE/DELETE ²éѯ½«·µ»ØÒ»Ð©Ïà¹ØµÄÐС£¶ø²»³É¹¦µÄ²éѯ½«·µ»ØÒ»¸ö´íÎó¡£
3. ¶ÔÓÚSELECT²éѯ£¬½á¹û¶ÔÏ󽫱»½øÒ»²½´¦ÀíÒÔÌáÈ¡Êý¾Ý¡£Ê¹ÓÃÒ»¸öÑ»·£¬fetchrow_hashref()·½·¨½«·µ»ØÃ¿Ò»¼Ç¼×÷ΪPerlµÄÐźš£
4. ͨ¹ýµ÷ÓÃdisconnect()·½·¨½áÊø»á»°¡£
µ±ÄãÏ»ؼÌÐøÔÚPerlÖбàдMySQLÊý¾Ý¿âÁ¬½Ó´úÂëʱ£¬ÕâÒ»½Å±¾Ä£¿é½«¿ÉΪÄã½Úʡʱ¼ä¡£±à³Ì¿ìÀÖ£¡

RSS¶©ÔÄ