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.
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 ();
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.
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 \"No matches for `$lastname'.\\n\\n\"
ANDARE
}
while (@results = $ sth-> fetchrow_array ()) {
i miei $ firstname = $ risultati [1]
ANDARE
my $age = $results[3]
ANDARE
print \"$firstname $lastname ($age)\\n\"
ANDARE
}
La maniglia dichiarazione è riordinato con il metodo di finitura, e il ciclo continua:
$sth->finish
ANDARE
print \"Search for last name: \"
ANDARE
}
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'");
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.