En af de mest kraftfulde funktioner i Perl er dets evne til at bearbejde , analysere , manipulere og formatere tekst og data , hvilket gør det til et ideelt sprog for at udvikle database applikationer. Perl Database Interface ( DBI ) Modul gør det nemt at oprette forbindelse til og bruge en bred vifte af databasesystemer , herunder MySQL. Ud over Perl skal Perl :: DBI modul og DBD :: mysql database driveren være installeret på systemet , hvor scripts er udviklet og henrettet. De fleste af funktionaliteten i MySQL kan tilgås via MySQL driver til Perl :: DBI . Tilslutning til MySQL Server
Før du kan udføre forespørgsler og andre udsagn på en database , dit script behov for at etablere en forbindelse. Importer DBI -modulet i dit script med "brug DBI " : Hej
brug DBI ,
DBI -> connect funktionen forbinder til en database og returnerer en database håndtag. Etabler en forbindelse til en lokal database , der giver navnet på din database i kilden parameter, og brugernavn og adgangskode til MySQL bruger dit script vil bruge til forbindelsen : Hej
min $ DBH = DBI -> ; connect ( ' DBI : mysql : dbname ' , 'bruger' , 'password' ) or die "Forbindelse mislykkedes : $ DBI :: errstr "
tilslutning til en ekstern database svarer til en lokal forbindelse med give den fjernværtsadressen i kilden parameter. I det følgende eksempel er RaiseError attribut indstillet til at rapportere fejl via die () i stedet for " eller dø " manuel fejlkontrol klausul i det foregående eksempel. Den PrintError attribut er deaktiveret. PrintError automatisk rapporterer fejl via advare (), når aktiveret
min $ DBH = DBI -> connect ( ' DBI : mysql : dbname , host = db.server.edu ' . , 'Bruger' , 'password' { PrintError = > 0 , RaiseError => 1} ) .
før du afslutter scriptet , afbryde forbindelsen til databasen vha. udkoblingsfunktion
$ DBH -> disconnect () ;
Basic forespørgsler
p mest almindelige erklæring udføres på en database er den SELECT-sætning . Opret en erklæring håndtag ved at kalde forberede funktion med SELECT-sætningen . For eksempel vil det udvælgelsesforespørgsel et bord notering af mennesker, for det første navn vilkår for alle poster , hvor efternavnet er " Johnson " : Hej
min $ sth = $ DBH -> forberede ( "SELECT fornavn FROM folk, hvor efternavn = ' Johnson ' ");
Udfør erklæringen : Hej
$ sth -> udføre ();
Hent en række data på et tidspunkt , da en hash og udskrive resultaterne : Hej
print " Query for efternavn Johnson: \\ n"; mens ( min $ resultrow = $ sth -> fetchrow_hashref ( )) { min $ fn = $ resultrow -> { firstname }; print " $ fn \\ n" ;}
p Der er flere funktioner til at hente forespørgsel resultater , såsom fetchrow_array at hente den næste række som en matrix og fetchall_hashref at hente alle resultaterne på én gang ind en hash .
Brug pladsholdere
Pladsholdere kan anvendes i opgørelsen udarbejder funktion. Dette er nyttigt i interaktive scripts , hvor query filterværdierne leveres af brugeren, især hvis en løkke giver brugeren mulighed for at indsende flere forespørgsler, før du afslutter .
For eksempel pladsholder ( spørgsmålstegnet ) giver stedet, hvor brugerinput vil blive ydet, når redegørelsen er udført : Hej
min $ sth = $ DBH -> forberede ( ' SELECT * FROM folk WHERE efternavn = ?') eller dø " Statement fejl:" . $ DBH -> errstr ,
mens loop gentagne gange beder brugeren om et efternavn : Hej
print " Søg efter efternavn: " while ( $ efternavn = < > ) { chomp $ efternavn , mine @ resultater
opgørelse udarbejdet tidligere er udført , med $ lastname leveres som en parameter. Denne parameter vil blive indsat i forespørgslen erklæring i stedet for spørgsmålstegnet pladsholder : Hej
$ sth -> udføre ( $ efternavn ) eller dø " Statement fejl:" . $ sth -> errstr ,
Resultaterne eventuelle udskrives : Hej
if ($ sth -> rækker == 0 ) { print " Ingen kampe for ` $ efternavn '\\ n \\ n "; . }
mens (@ resultater = $ sth -> fetchrow_array ( )) { min $ firstname = $ resultater [1], min $ alder = $ resultater [3] ; print " $ fornavn $ efternavn ( $ age) \\ n" ;}
Opgørelsen håndtaget er ryddet op med finish metoden , og sløjfen fortsætter : Hej
$ sth -> slut ; print " Søg efter efternavn: ";}
tilføje, opdatere og slette Records
Updates , kan skær og sletter udføres blot ved hjælp af do -funktionen. For eksempel : Hej
$ DBH -> gør ( " INSERT INTO personer ( fornavn, efternavn , alder ) VALUES ( ' Bob ', ' Johnson ' , 32) "); $ DBH -> gør ( " UPDATE mennesker sat firstname = ' Robert ' , hvor fornavn = " , undef , " Bob ? ") , $ DBH -> gøre ( " DELETE FROM folk WHERE efternavn = ' Johnson ' ");
fotos Opbygning og styring af en database
database administrative funktioner udføres med funk -funktionen ved hjælp af databasen håndtere fås fra forbindelsen : Hej
$ DBH -> funk ( " createdb " , $ dbname , 'admin '); $ DBH -> funk ( " dropdb " , $ dbname , 'admin ');
serveren kan også genindlæses og lukke ned. Denne funktionalitet er nyttig for at forenkle og automatisere database systemer administrationsopgaver . Tilstrækkelige privilegier er påkrævet for disse handlinger .
Database tabel oprette og ændre udsagn kan udføres med den do -funktionen. For eksempel opretter denne erklæring mennesker tabellen : Hej
$ DBH -> gøre ( " CREATE TABLE personer ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY , fornavn VARCHAR (50) , efternavn VARCHAR (50) , alder INT ) ");
Oprettelse og opdatering af eksisterende databaser er nyttig til at automatisere installationen af distribuerede applikationer, såsom diskussionsgrupper , fotogallerier og blogs
.