Een van de meest krachtige functies van Perl is de mogelijkheid om te verwerken , analyseren , bewerken en opmaken van tekst en data , waardoor het een ideale taal voor het ontwikkelen van databasetoepassingen . De Perl Database Interface ( DBI ) Module maakt het eenvoudig om verbinding te maken en het gebruik van een breed scala van database- systemen , waaronder MySQL . Naast Perl , moet de Perl :: DBI module en DBD :: MySQL database driver op het systeem waar de scripts worden ontwikkeld en uitgevoerd worden geïnstalleerd . Het grootste deel van de functionaliteit van MySQL kan worden geraadpleegd via de MySQL driver voor Perl :: DBI . Verbinding maken met de MySQL Server Voordat u queries en andere verklaringen over een database kan uitvoeren , je script nodig heeft om een verbinding te maken. Importeer de DBI module in je script met " gebruik DBI " : gebruik DBI ; De DBI - > connect functie maakt verbinding met een database en keert terug van een database handvat . Breng een verbinding met een lokale database , die de naam van uw database in de parameter source , en de gebruikersnaam en het wachtwoord voor de MySQL gebruiker je script zal gebruiken voor de verbinding : mijn $ dbh = DBI - > , sluit ( ' DBI : mysql : dbname ' , ' user' , ' wachtwoord' ) or die " verbinding mislukt : $ DBI :: errstr " ; verbinding maken met een externe database is vergelijkbaar met een lokale verbinding door het verstrekken van de remote host adres in de parameter source . In het volgende voorbeeld wordt het attribuut RaiseError ingesteld op fouten via sterven ( ) in plaats van het rapport " of sterven " handmatige foutcontrole clausule in het vorige voorbeeld . De PrintError kenmerk is uitgeschakeld . PrintError meldt automatisch fouten via waarschuwen ( ) wanneer ingeschakeld mijn $ dbh = DBI - > connect ( ' DBI : mysql : dbname ; host = db.server.edu ' . , 'Gebruiker' , ' wachtwoord' , { PrintError = > 0 , RaiseError = > 1 } ) ; . Voordat het script verlaten , los te koppelen van de database met behulp van de afschakelfunctie $ dbh - > disconnect ( ) ; Basic vragen de meest voorkomende verklaring uitgevoerd op een databank is de SELECT-instructie . Maak een statement handvat door te bellen naar het bereiden functie met de SELECT-instructie . Zo zal dit SELECT een tabel van mensen bevragen voor de eerste veldnaam voor alle inzendingen , waar de laatste naam is " Johnson " : mijn $ sth = $ dbh - > bereiden ( "SELECT voornaam FROM mensen WHERE achternaam = ' Johnson ' " ) ; Voer de verklaring : $ sth - > execute ( ) ; ophalen een rij gegevens in een tijd als een hash en print de resultaten : afdruk "Query voor achternaam Johnson : \\ n " ; terwijl ( mijn $ resultrow = $ sth - > fetchrow_hashref ( ) ) { my $ fn = $ resultrow - > { voornaam } ; print " $ fn \\ n " ; } Er zijn verschillende functies voor het ophalen van query resultaten , zoals fetchrow_array naar de volgende rij als een array en fetchall_hashref halen om alle resultaten te halen in een keer in een hash . behulp Placeholders Placeholders kan gebruikt worden in de verklaring te bereiden functie . Dit is handig in interactieve scripts waar queryfilter waarden worden door de gebruiker , met name als een lus kan de gebruiker meerdere query's in te dienen voordat u afsluit . Bijvoorbeeld de tijdelijke aanduiding ( het vraagteken ) geeft de plek waar input van de gebruiker zal worden geboden wanneer de instructie wordt uitgevoerd : mijn $ sth = $ dbh - > bereiden ( ' SELECT * FROM mensen WHERE achternaam = ? " ) or die " verklaring error : " . $ dbh - > errstr ; Een while lus wordt de gebruiker gevraagd om een achternaam herhaaldelijk : print " Zoek achternaam : " ; while ( $ achternaam = < > ) { chomp $ achternaam ; mijn @ resultaten ; De verklaring bereid eerder wordt uitgevoerd , met $ achternaam verstrekt als parameter . Deze parameter in de query verklaring in plaats van het vraagteken placeholder ingevoegd: $ sth - > execute ( $ achternaam ) or die " Verklaring error : " . $ sth - > errstr ; De resultaten , indien aanwezig, worden afgedrukt : if ( $ sth - > rijen == 0 ) { print " Geen resultaten voor ` $ achternaam " \\ n \\ n " ; . } terwijl ( @ results = $ sth - > fetchrow_array ( ) ) { my $ voornaam = $ resultaat [ 1 ] ; mijn $ leeftijd = $ resultaat [ 3 ] ; print " $ voornaam $ achternaam ( $ leeftijd ) \\ n " ; } de verklaring handvat is opgeruimd met de afwerking methode , en de lus gaat verder : $ sth - > afwerking ; print " Zoek achternaam : " ; } toevoegen , bijwerken en verwijderen van records updates , kan inserts en verwijdert eenvoudig worden uitgevoerd met behulp van de do -functie . Bijvoorbeeld : $ dbh - > weet ( " INSERT INTO mensen ( voornaam, achternaam , leeftijd ) VALUES ( ' Bob ' , ' Johnson ' , 32 ) " ) ; $ dbh - > doen ( " UPDATE mensen stellen voornaam = ' Robert ' waarbij voornaam = " , undef , ' Bob ?' ) ; $ dbh - > do ( " DELETE FROM mensen WHERE achternaam = ' Johnson ' " ) ; bouwen en beheren van een database Database administratie functies worden uitgevoerd met de func -functie met behulp van de database te beheren verkregen van de verbinding : $ dbh - > functie ( " createdb " , $ dbname , 'admin' ) ; $ dbh - > functie ( " dropdb " , $ dbname , 'admin' ) ; De server kan ook worden herladen en stilgelegd . Deze functionaliteit is handig voor het vereenvoudigen en automatiseren van database- systemen beheertaken . Voldoende rechten zijn vereist voor deze acties . Database tafel creëren en veranderen uitspraken kunnen worden uitgevoerd met de do -functie . Bijvoorbeeld , deze verklaring leidt tot de tafel mensen : $ dbh - > do ( "CREATE TABLE mensen ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY , voornaam VARCHAR ( 50 ) , achternaam VARCHAR ( 50 ) , leeftijd INT ) " ) ; aanmaken en updaten van bestaande databanken is nuttig voor het automatiseren van de installatie van gedistribueerde toepassingen , zoals discussieforums , fotogalerijen en blogs . |