En av de kraftigste funksjonene i Perl er dens evne til å behandle , analysere , manipulere og formatere tekst og data , noe som gjør det til et ideelt språk for utvikling av databaseapplikasjoner. Perl Database Interface ( DBI ) Modul gjør det enkelt å koble til og bruke et bredt spekter av databasesystemer, inkludert MySQL. I tillegg til Perl , må Perl :: DBI modul og DBD :: mysql database driver installeres på systemet der skriptene er utviklet og henrettet. Mesteparten av funksjonaliteten i MySQL kan nås via MySQL driver for Perl :: DBI . Tilkobling til MySQL Server
Før du kan kjøre spørringer og andre uttalelser på en database , må skript for å opprette en tilkobling. Importere DBI modulen i skriptet med " bruk DBI " : en
bruk DBI ;
DBI - > connect funksjon kobles til en database og returnerer en database håndtak . Opprette en tilkobling til en lokal database , og gir navnet på databasen i kilden parameter, og brukernavnet og passordet for MySQL brukeren skriptet vil brukes for tilkoblingen : en
min $ DBH = DBI - > ; koble (' DBI : mysql : dbname ', ' bruker', 'password ') or die " tilkobling mislyktes : $ DBI :: errstr ";
koble til en ekstern database er lik en lokal tilkobling av gi den eksterne verten adresse i kilden parameter. I følgende eksempel er RaiseError attributtet satt til å rapportere feil via die ( ) i stedet for "eller dø " manuell feilkontroll klausul i forrige eksempel . Den PrintError attributt er deaktivert. PrintError rapporterer automatisk feil via advare ( ) når den er aktivert
min $ DBH = DBI - > connect (' DBI : mysql : dbnavn ; host = db.server.edu ' . , "Bruker" , "passord" , { PrintError = > 0 , RaiseError = > 1 }); .
Før du avslutter manuset, koble fra databasen ved hjelp av utkopling
$ DBH - > disconnect ( ) ;
Basic spørringer
den vanligste utsagnet utføres på en database er SELECT-setningen . Lag en uttalelse håndtaket ved å ringe forberede funksjon med SELECT-setningen . For eksempel vil dette SELECT spørring en tabell som viser mennesker for første navnefeltet for alle oppføringer der etternavnet er " Johnson" : en
min $ sth = $ DBH - > forberede ( "SELECT fornavn FRA folk WHERE etternavn = ' Johnson ' ");
utføre setningen : en
$ sth - > utføre ( ) ;
hente en rad med data i en tid som en hash og skrive ut resultatet : en
print " Query for etternavnet Johnson : \\ n" , mens ( min $ resultrow = $ sth - > fetchrow_hashref ( ) ) { my $ fn = $ resultrow - > { fornavn }; print " $ fn \\ n "; }
p Det er flere funksjoner for å hente søkeresultatene , for eksempel fetchrow_array å hente neste rad som en matrise og fetchall_hashref å hente alle resultatene på en gang til en hash .
Bruke plassholdere
plassholdere kan brukes i uttalelsen forberede funksjonen. Dette er nyttig i interaktive skript hvor spørringen filterverdiene er gitt av brukeren, spesielt hvis en loop tillater brukeren å sende inn flere spørsmål før du går ut .
For eksempel gir plassholderen ( spørsmålstegnet ) stedet der brukerundersøkelser vil bli gitt når setningen utføres : en
min $ sth = $ DBH - > forberede (' SELECT * FROM folk WHERE etternavn = ? ') eller dø "Statement feil: " . $ DBH - > errstr ;
En stund løkke gjentatte ganger ber brukeren om et etternavn : en
print "Søk etter etternavn :"; while ( $ etternavn = < > ) { chomp $ etternavn ; mine @ resultater;
uttalelse forberedt tidligere er utført, med $ etternavn gitt som en parameter. Denne parameteren vil bli satt inn i søket uttalelse i stedet for spørsmålstegnet plassholder : en
$ sth - > utføre ( $ etternavn ) eller dø "Statement feil: " . $ sth - > errstr ;
Resultatene som eventuelt skrives ut : en
if ( $ sth -> rader == 0 ) { print " Ingen treff for ` $ etternavn '\\ n \\ n "; . }
mens (@ resultatene = $ sth - > fetchrow_array ( ) ) { min $ fornavn = $ resultater [ 1 ]; min $ alder = $ resultater [ 3 ]; print " $ fornavn $ etternavn ( $ alder) \\ n "; }
uttalelsen håndtaket er ryddet opp med målgang metoden, og løkken fortsetter : en
$ sth - > ferdig ; print "Søk etter etternavn :"; }
legge til, oppdatere og slette poster
oppdateringer, kan inserts og sletter utføres bare ved hjelp av do -funksjonen . For eksempel : en
$ DBH - > gjør ( " INSERT INTO mennesker ( fornavn , etternavn , alder ) VALUES ( ' Bob ', ' Johnson ' , 32 ) "); $ DBH - > gjør ( " UPDATE folk setter fornavn = ' Robert ' WHERE fornavn = " , undef , " Bob ? "); $ DBH - > gjøre ( " DELETE FROM folk WHERE etternavn = ' Johnson ' ");
bilder bygge og administrere en database
database administrasjon funksjoner utføres med funk -funksjonen ved hjelp av databasen håndtere hentet fra tilkoblingen : en
$ DBH - > funk ( " createdb ", $ dbname , ' admin '); $ DBH - > funk ( " dropdb ", $ dbname , ' admin ');
serveren kan også lastes på nytt og slå . Denne funksjonaliteten er nyttig for å forenkle og automatisere databasesystemer administrasjonsoppgaver . Tilstrekkelige rettigheter er nødvendig for disse handlingene .
Database tabellen opprette og endre uttalelser kan utføres med do -funksjonen . For eksempel , skaper dette utsagnet folk bordet : en
$ DBH - > gjøre ( "CREATE TABLE folk ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY , fornavn VARCHAR ( 50 ) , etternavn VARCHAR ( 50 ) , alder INT ) ");
Opprette og oppdatere eksisterende databaser er nyttig for å automatisere installasjonen av distribuerte applikasjoner , for eksempel diskusjonsfora , fotogallerier og blogger
.