En av de mest kraftfulla funktionerna i Perl är dess förmåga att bearbeta , tolka , hantera och formatera text och data , vilket gör det till en idealisk språk för att utveckla databasapplikationer . Den Perl Database Interface ( DBI ) Module gör det enkelt att ansluta till och använda ett brett spektrum av databassystem , inklusive MySQL . Förutom Perl , måste Perl :: DBI -modul och DBD :: mysql databas drivrutin installeras på systemet där manus utvecklas och genomförs . De flesta av funktionerna i MySQL kan nås via MySQL drivrutinen för Perl :: DBI . Ansluta till MySQL Server
Innan du kan köra frågor och övriga uttalanden på en databas , behöver ditt manus för att upprätta en anslutning . Importera DBI -modulen i ditt skript med " användning DBI " :
användning DBI ,
DBI - > connect funktionen ansluter till en databas och returnerar en databas handtag . Etablera en anslutning till en lokal databas , som ger namnet på din databas i parametern source , och användarnamn och lösenord för MySQL användaren skriptet ska användas för anslutningen :
min $ dbh = DBI - > , anslut ( ' DBI : mysql : databasnamn ' , ' user ' , ' lösenord ' ) eller dö " anslutning misslyckades : $ DBI :: errstr " ,
ansluta till en avlägsen databas liknar en lokal anslutning av ger fjärrvärden adressen i parametern source . I följande exempel är RaiseError attributet satt att rapportera fel via die ( ) i stället för " eller dö " manuell felkontroll klausul i det tidigare exemplet . Den PrintError attribut är inaktiverad . PrintError rapporterar automatiskt fel via varna ( ) när aktiverad
min $ dbh = DBI - > connect ( " DBI : mysql : databasnamn , host = db.server.edu ' . " Användare " , " lösenord " , { PrintError = > 0 , RaiseError = > 1 } ) ; .
innan skriptet avslutas , koppla från databasen med urkopplingsfunktion
$ DBH - > disconnect ( ) , Addera Grundläggande frågor
det vanligaste uttalande körs på en databas är SELECT-uttrycket . Skapa ett uttalande handtag genom att anropa förbereda funktion med SELECT-uttrycket . Till exempel , kommer denna urvalsfrågan en tabell listning av människor för det första namnet villkor för alla poster där efternamnet är " Johnson " :
min $ sth = $ DBH - > förbereda ( " SELECT förnamn FROM människor WHERE efternamn = ' Johnson ' " ) ;
kör uttalande :
$ sth - > execute ( ) ;
Hämta en rad med data vid en tidpunkt som en hash och skriva ut resultaten :
print " Query för efternamn Johnson : \\ n " , medan ( min $ resultrow = $ sth - > fetchrow_hashref ( ) ) { my $ fn = $ resultrow - > { förnamn }; print " $ fn \\ n " ;}
p Det finns flera funktioner för att hämta frågeresultat som fetchrow_array att hämta nästa rad som en matris och fetchall_hashref att hämta alla resultat på en gång i en hash .
Använda platshållare
platshållare kan användas i meddelandet förbereda funktionen . Detta är användbart i interaktiva skript där query filtervärdena tillhandahålls av användaren , i synnerhet om en slinga tillåter användaren att skicka flera förfrågningar innan du avslutar .
Till exempel ger platshållaren ( frågetecknet ) den plats där indata kommer att lämnas när satsen körs :
min $ sth = $ DBH - > förbereda ( " SELECT * FROM folk WHERE Efternamn = ? ") eller dö " Statement fel : " . $ DBH - > errstr ,
en while-slinga upprepade gånger ber användaren om ett efternamn :
print " Sök efter efternamn : " ; while ( $ efternamn = < > ) { chomp $ lastname ; mina @ resultat,
uttalande utarbetats tidigare exekveras , med $ lastname tillhandahålls som en parameter. Denna parameter kommer att införas i frågeuppgiften i stället för frågetecken platshållare :
$ sth - > execute ( $ efternamn ) eller dö " Statement fel : " . $ sth - > errstr ,
Resultaten , om några, skrivs ut :
if ($ sth -> rader == 0 ) { print " Inga resultat för ` $ efternamn " \\ n \\ n "; . }
samtidigt ( @ resultat = $ sth - > fetchrow_array ( ) ) { my $ förnamn = $ resultat [ 1 ] , min $ ålder = $ resultat [ 3 ] ; print " $ förnamn $ efternamn ( $ okänd ) \\ n " ;}
uttalandet handtaget är städat med målgång metoden , och slingan fortsätter :
$ sth - > yta ; print " Sök efter efternamn : " ; } Addera lägga till, uppdatera och ta bort poster
uppdateringar , kan insatser och raderar utföras enkelt genom att använda inte fungerar . Till exempel :
$ DBH - > gör ( " INSERT INTO personer ( förnamn , efternamn , ålder ) VALUES ( ' Bob ' , ' Johnson ' , 32 ) " ) ; $ DBH - > gör ( " UPDATE människor som förnamn = ' Robert ' där förnamn = " , undef , " Bob ? " ) ; $ DBH - > göra ( " DELETE FROM folk WHERE efternamn = ' Johnson ' " ) ;
bygga och sköta en databas
funktioner databasadministration utförs med funk funktion med hjälp av databasen hanterar erhållits från anslutningen :
$ DBH - > func ( " createdb " , $ dbname , ' admin ' ) ; $ DBH - > func ( " dropdb " , $ dbname , ' admin ');
servern kan också laddas om och stängas . Denna funktion är användbart för att förenkla och automatisera databassystem administrativa uppgifter . Tillräckliga behörigheter krävs för dessa åtgärder .
Databastabell skapar och förändrar uttalanden kan utföras med den inte fungerar . Till exempel , skapar detta uttalande människor tabellen :
$ DBH - > göra ( " CREATE TABLE folk ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY , förnamn VARCHAR ( 50 ) , Efternamn VARCHAR ( 50 ) , ålder INT ) " ) ;
skapa och uppdatera befintliga databaser är användbar för att automatisera installationen av distribuerade tillämpningar , t.ex. diskussionsforum , fotogallerier och bloggar Addera
.