MySQL Perl DBI Tutorial

En av de kraftigste funksjonene i Perl er dens evne til å behandle, analysere, manipulere og tekstformat 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, Perl :: DBI modul og DBD :: mysql database driver må være installert på systemet der skriptene er utviklet og henrettet. Det meste 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, trenger din skript for å opprette en tilkobling. Importer DBI modulen i skriptet med "bruk DBI":

bruk DBI

Den DBI-> koble funksjon kobler til en database og returnerer en database håndtak. Opprett en forbindelse til en lokal database, og gir navnet på databasen i kilden parameter, og brukernavnet og passordet for MySQL brukeren skriptet vil bruke for tilkoblingen:

min $ DBH = DBI-> koble ( 'DBI: mysql: dbnavn', 'bruker', 'passord') or die \ "Tilkobling mislyktes: $ DBI :: errstr \"

Koble til en ekstern database er lik en lokal tilkobling ved å gi den eksterne verten adresse i kilde parameter. I det 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 varsle () når den er aktivert.

min $ DBH = DBI-> koble ( 'DBI: mysql: dbnavn; host = db.server.edu', 'bruker', 'passord', {PrintError => 0, RaiseError => 1})

Før du går ut av manuset, koble fra databasen ved hjelp av frakoblingsfunksjon.

$ Dbh-> frakobling ();

grunn~~POS=TRUNC søk

Den vanligste utsagnet utført på en database er SELECT-setningen. Lag en uttalelse håndtak ved å ringe forberede funksjon med SELECT-setningen. For eksempel vil dette SELECT spørring et bord oppføring av mennesker for første navnefeltet for alle oppføringer der etternavnet er "Johnson":

min $ sth = $ dbh-> forberede ( "SELECT fornavn fra folk WHERE etternavn = 'Johnson'»)

Utføre setningen:

$ Sth-> utføre ()

Hente en rad med data om gangen som en hash og skrive resultatene:

skrive ut \ "Kriterier for etternavn Johnson: \ n \"

while (min $ resultrow = $ sth-> fetchrow_hashref ()) {
min $ fn = $ resultrow -> {fornavn}

print \ "$ fn \ n \"

}

Det finnes flere funksjoner for å hente søkeresultatene, for eksempel fetchrow_array å hente neste rad som en matrise og fetchall_hashref å hente alle resultatene med en gang inn i en hash.

Bruke Plassholdere

Plassholdere kan brukes i uttalelsen forberede funksjon. Dette er nyttig i interaktive skript hvor spørrefilterverdier er gitt av brukeren, spesielt hvis en løkke tillater brukeren å sende inn flere spørsmål før du avslutter.

For eksempel plassholderen (spørsmålstegnet) gir stedet hvor brukerundersøkelser vil bli gitt når setningen utføres:

min $ sth = $ dbh-> forberede ( 'SELECT * FROM folk hvor etternavn =') or die \ "Statement feil: \". $ Dbh-> errstr

En stund løkke gjentatte ganger ber brukeren om et etternavn:

skrive ut \ "Søk etter navn: \"

while ($ lastname = <>) {
chomp $ lastname

mine @results

Uttalelsen 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:

$ Sth-> utføre ($ etternavn) eller dø \ "Statement feil: \". $ Sth-> errstr

Resultatene, om noen, blir skrevet ut:

if ($sth->rows == 0) {
print \&quot;No matches for `$lastname'.\\n\\n\&quot;

}

while (@results = $ sth-> fetchrow_array ()) {
mine $ firstname = $ resultater [1]

my $age = $results[3]

print \&quot;$firstname $lastname ($age)\\n\&quot;

}

Setningen Håndtaket er ryddet opp med mål-metoden, og sløyfen fortsetter:

$sth->finish

print \&quot;Search for last name: \&quot;

}

Legge til, oppdatere og slette Records

Oppdateringer, innlegg og sletter kan utføres ganske enkelt ved hjelp av do-funksjonen. For eksempel:

$ Dbh-> trenger ( "INSERT INTO personer (fornavn, etternavn, alder) VALUES ( 'Bob', 'Johnson', 32)")

$ Dbh-> trenger ( "UPDATE folk satt fornavn = 'Robert' hvor firstname =", udef, "Bob")

$ Dbh-> trenger ( "DELETE FROM folk WHERE etternavn = 'Johnson'");

Bygge og administrere en database

Database administrative funksjoner utføres med func funksjon ved hjelp av databasen håndtaket hentet fra sammenhengen:

$ Dbh-> funk (\ "createdb \", $ dbnavn, "admin")

$ Dbh-> funk (\ "dropdb \", $ dbnavn, "admin")

Serveren kan også lastes inn på nytt og slå. Denne funksjonaliteten er nyttig for å forenkle og automatisere databasesystemer administrasjonsoppgaver. Tilstrekkelige rettigheter er nødvendig for disse handlingene.

Database tabell opprette og endre uttalelser kan utføres med gjør funksjonen. For eksempel, skaper denne uttalelsen folk tabellen:

$ Dbh-> trenger ( "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 installasjon av distribuerte applikasjoner, for eksempel diskusjonsgrupper, fotogallerier og blogger.