MySQL Perl DBI Tutorial

February 4

Una delle caratteristiche più potenti di Perl è la sua capacità di elaborare, analizzare, manipolare e formattare il testo e dati, che lo rende un linguaggio ideale per lo sviluppo di applicazioni di database. L'interfaccia database Perl (DBI) Modulo rende facile connettersi e utilizzare una vasta gamma di sistemi di database, tra cui MySQL. Oltre a Perl, il modulo Perl :: DBI e DBD :: driver di database mysql deve essere installato sul sistema in cui gli script sono sviluppati e realizzati. La maggior parte delle funzionalità di MySQL è possibile accedere tramite il driver di MySQL per Perl :: DBI.

Connessione al server MySQL

Prima di poter eseguire query e altre dichiarazioni su un database, lo script ha bisogno di stabilire una connessione. Importare il modulo DBI nello script con "use DBI":

uso DBI
ANDARE

La DBI-> funzione Connect si collega a un database e restituisce un handle di database. Stabilire una connessione ad un database locale, fornendo il nome del database nel parametro di origine, e il nome utente e la password per l'utente MySQL lo script utilizzerà per la connessione:

il mio $ dbh = DBI-> connect ( 'DBI: mysql: dbname', 'utente', 'password') or die \ "Connessione fallita: $ DBI :: errstr \"
ANDARE

Connessione a un database remoto è simile a una connessione locale fornendo l'indirizzo host remoto nel parametro source. Nel seguente esempio, l'attributo RaiseError è impostato per segnalare errori tramite die () al posto del controllo degli errori clausola "o morire" manuale nell'esempio precedente. L'attributo PrintError è disabilitato. PrintError segnala automaticamente gli errori tramite avvertire () quando abilitato.

il mio $ dbh = DBI-> connect ( 'DBI: mysql: dbname; host = db.server.edu', 'utente', 'password', {PrintError => 0, RaiseError => 1})
ANDARE

Prima di uscire lo script, disconnettersi dal database utilizzando la funzione di disconnessione.

$ Dbh-> disconnect ();

query di base

L'affermazione più comune eseguito su un database è l'istruzione SELECT. Creare un handle di istruzione chiamando la funzione di preparare con l'istruzione SELECT. Ad esempio, questo SELECT interrogare un elenco tavolo di persone per il primo campo del nome per tutte le voci in cui il cognome è "Johnson":

my $ sth = $ dbh-> prepare ( "SELECT cognome da parte di persone WHERE cognome = 'Johnson'")
ANDARE

Eseguire l'istruzione:

$ Sth-> execute ()
ANDARE

Recuperare una riga di dati alla volta, come un hash e stampare i risultati:

stampare \ "Query per cognome Johnson: \ n \"
ANDARE
while (my $ resultrow = $ sth-> fetchrow_hashref ()) {
il mio $ fn = $ resultrow -> {} Cognome
ANDARE
print \ "$ fn \ n \"
ANDARE
}

Ci sono diverse funzioni per il recupero dei risultati della query, come ad esempio fetchrow_array per andare a prendere la riga successiva come un array e fetchall_hashref a prendere tutti i risultati in una sola volta in un hash.

Usare segnaposti

I segnaposto possono essere utilizzati nella dichiarazione funzione di preparare. Questo è utile negli script interattivi dove valori del filtro query vengono forniti dall'utente, in particolare se un loop consente all'utente di inviare più query prima di uscire.

Ad esempio, il segnaposto (il punto di domanda) è il luogo in cui sarà fornito l'input dell'utente quando viene eseguita l'istruzione:

my $ sth = $ dbh-> preparare ( 'SELECT * FROM persone dove cognome =?') or die \ "Errore Statement: \". $ Dbh-> errstr
ANDARE

Un ciclo while chiede ripetutamente all'utente un cognome:

stampare \ "Cerca il cognome: \"
ANDARE
while ($ cognome = <>) {
chomp $ cognome
ANDARE
i miei @results
ANDARE

La dichiarazione preparata in precedenza viene eseguito, con $ cognome fornito come parametro. Questo parametro verrà inserito nella dichiarazione query in luogo del segnaposto punto interrogativo:

$ Sth-> execute ($ cognome) or die \ "Errore Statement: \". $ Sth-> errstr
ANDARE

I risultati, se presenti, vengono stampati:

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

ANDARE

}

while (@results = $ sth-> fetchrow_array ()) {
i miei $ firstname = $ risultati [1]

ANDARE

my $age = $results[3]

ANDARE

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

ANDARE

}

La maniglia dichiarazione è riordinato con il metodo di finitura, e il ciclo continua:

$sth->finish

ANDARE

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

ANDARE

}

Aggiunta, aggiornamento e la cancellazione Records

Aggiornamenti, inserti ed eliminazioni possono essere eseguiti semplicemente utilizzando la funzione do. Per esempio:

$ Dbh-> do ( "INSERT INTO persone (nome, cognome, età) VALORI ( 'Bob', 'Johnson', 32)")
ANDARE
$ Dbh-> do ( "UPDATE persone impostare cognome = 'Robert' dove cognome =?", Undef, "Bob")
ANDARE
$ Dbh-> do ( "DELETE FROM WHERE persone cognome = 'Johnson'");

Costruzione e gestione di un database

funzioni di amministrazione di database vengono eseguiti con la funzione func utilizzando la maniglia database ottenuto dal collegamento:

$ Dbh-> func (\ "createdb \", $ dbname, 'admin')
ANDARE
$ Dbh-> func (\ "dropdb \", $ dbname, 'admin')
ANDARE

Il server può anche essere ricaricato e spento. Questa funzionalità è utile per semplificare e automatizzare le attività di amministrazione dei sistemi di database. privilegi sufficienti sono necessari per queste azioni.

tabella di database di creare e modificare le dichiarazioni possono essere eseguite con la funzione do. Ad esempio, questa istruzione crea la tabella di persone:

$ Dbh-> do ( "CREATE TABLE persone (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, nome VARCHAR (50), cognome VARCHAR (50), l'età INT)")
ANDARE

La creazione e l'aggiornamento di banche dati esistenti è utile per automatizzare l'installazione di applicazioni distribuite, come forum di discussione, gallerie di foto e blog.