Nwlapcug.com


MySQL Perl DBI Tutorial

Una delle caratteristiche più potenti di Perl è la sua capacità di elaborare, analizzare, modificare e formattare il testo e dati, che lo rende un linguaggio ideale per sviluppare applicazioni di database. Il modulo di interfaccia di Database di Perl (DBI) rende facile per connettersi e utilizzare una vasta gamma di sistemi di database, tra cui MySQL. Oltre a Perl, il modulo Perl::DBI e DBD:: MySQL database driver deve essere installati il sistema dove gli script sono sviluppati ed eseguiti. La maggior parte delle funzionalità di MySQL sono accessibili tramite il driver MySQL per Perl::DBI.

Connessione al Server MySQL

Prima di poter eseguire query e altre istruzioni in un database, lo script ha bisogno di stabilire una connessione. Importare il modulo DBI uno script con "uso DBI":

utilizzare DBI
VAI

Il DBI -> collegare funzione si connette a un database e restituisce un handle di database. Stabilire una connessione a un database locale, fornendo il nome del database nel parametro di origine e il nome utente e la password per l'utente MySQL script verrà utilizzato per la connessione:

mio $dbh = DBI -> collegare ('DBI:mysql:dbname', 'utente', 'password') o morire \"Connection non riuscita: $DBI:: errstr\"
VAI

Connessione a un database remoto è simile a una connessione locale, fornendo l'indirizzo host remoto nel parametro source. Nell'esempio seguente, l'attributo RaiseError è impostato per segnalare gli errori tramite die() al posto di "or die" errore manuale controllo clausola nell'esempio precedente. L'attributo PrintError è disattivato. PrintError segnala automaticamente gli errori tramite warn quando attivato.

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

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

$dbh -> Disconnect;

Query di base

L'istruzione più comune eseguita su un database è l'istruzione SELECT. Creare un handle di istruzione chiamando la funzione di preparare con l'istruzione SELECT. Ad esempio, questo selezionare eseguirà una query un elenco della tabella di persone per il campo nome per tutte le voci in cui il cognome è "Johnson":

mio $sth = $dbh - > preparare ("SELECT firstname FROM persone WHERE lastname = 'Johnson'")
VAI

Eseguire l'istruzione:

$sth -> Execute)
VAI

Recuperare una riga di dati in un momento come un hash e stampare i risultati:

stampare \"Query per Cognome Johnson: \n\"
VAI
mentre (mio $resultrow = $sth -> fetchrow_hashref()) () {
mio $fn = $resultrow -> {firstname}
VAI
stampa \"$fn\n\"
VAI
}

Sono disponibili diverse funzioni per il recupero di risultati della query, ad esempio fetchrow_array per recuperare la riga successiva come un array e fetchall_hashref per recuperare tutti i risultati in una sola volta in un hash.

Utilizzo di segnaposti

I segnaposto possono essere utilizzati nell'istruzione preparare funzione. Questo è utile negli script interattivo dove i valori del filtro di query sono forniti dall'utente, in particolare se un ciclo permette all'utente di inviare più query prima di uscire.

Ad esempio, il segnaposto (il punto interrogativo) è il luogo dove sarà fornito l'input dell'utente quando viene eseguita l'istruzione:

mio $sth = $dbh - > preparare (' selezionare * da persone WHERE lastname =?') o morire \"Statement errore: \". $dbh -> errstr
VAI

Un while ciclo ripetutamente chiede all'utente per un cognome:

stampare \"Search per Cognome: \"
VAI
mentre ($lastname = <>) {
Chomp $lastname
VAI
mio @results
VAI

Viene eseguita l'istruzione preparato in precedenza, con $lastname fornito come parametro. Questo parametro verrà inserito l'istruzione della query in sostituzione del segnaposto punto interrogativo:

$sth -> execute($lastname) o morire \"Statement errore: \". $sth -> errstr
VAI

I risultati, se presenti, vengono stampati:

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

VAI

}

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

VAI

my $age = $results[3]

VAI

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

VAI

}

L'handle di istruzione è riordinato con il metodo di finitura, e il ciclo continua:

$sth->finish

VAI

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

VAI

}

Aggiunta, aggiornamento ed eliminazione di record

Aggiornamenti, inserimenti ed eliminazioni possono essere eseguite semplicemente utilizzando la funzione. Per esempio:

$dbh -> fare ("INSERT INTO persone (firstname, lastname, age) VALUES ('Bob', 'Johnson', 32)")
VAI
$dbh -> fare ("UPDATE persone set firstname = 'Robert' where firstname =?", undef, "Bob")
VAI
$dbh -> fare ("DELETE FROM persone WHERE lastname = 'Johnson'");

Costruzione e gestione di un Database

Funzioni di amministrazione del database vengono eseguite con la funzione func utilizzando l'handle di database ottenuto dalla connessione:

$dbh -> func (\"createdb\", $dbname, 'admin')
VAI
$dbh -> func (\"dropdb\", $dbname, 'admin')
VAI

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

Tabella di database creare e modificare le istruzioni possono essere eseguite con il fare funzionare. Ad esempio, questa istruzione crea la tabella di persone:

-> $dbh ("CREATE TABLE persone (id INT non NULL AUTO_INCREMENT PRIMARY KEY, firstname varchar (50), lastname varchar (50), età INT)")
VAI

Creazione e aggiornamento di database esistenti è utile per automatizzare l'installazione di applicazioni distribuite, quali forum di discussione, gallerie di foto e Blog.