MySQL

Notis: Kapitlet är långt ifrån klart, knappt ens vettigt att publicera det. Men eftersom detta är en Wiki lägger jag ut det i hopp om att någon hjälper mig på traven att få det färdigt.

Ett starkt skäl till att använda PHP är dess stöd för databaser. PHP stödjer en mängd olika databaser men vanligast är dock att man använder Open Source databasen MySQL ([http://www.mysql.com]).

För instruktioner om hur du installerar MySQL, se MySQL manualen.

MySQL är i sig tillräckligt omfattande för att ligga till grund för tjocka böcker, jag kommer därför inte kunna gå igenom allt utan endast skrapa på ytan. Men precis som med templates kan jag kanske ge dig lite kött på benen. När du har detta kan du sedan gå ut på Internet och söka upp mer information! PHP-manualen innehåller 48 funktioner för hantering av MySQL-databaser, de finner dem i avsnittet "MySQL Functions" i PHP-manualens referensdel.

Varför använda databas?

Varför skall du överhuvudtaget använda dig av en databas? Räcker det inte med och lagra informationen i filer? Jo, ofta räcker det faktiskt till, men att lägga det i en databas är mycket smidigare. En databas är skapad med det enda målet att du enkelt skall kunna stoppa in och plocka ut data därifrån. Det är mycket enklare att hantera datan då det finns funktioner inbyggda för detta, hanterar du rena filer måste du ofta skapa dessa funktioner själv. Databaser är också vanligtvis snabbare än det vanliga filsystemet. Kort sagt, har du tillgång till en databas - använd den.

Verktyg

När du hanterar databaser kan du antingen jobba direkt mot MySQL klienten eller så kan du använda något av de verktyg som finns tillgängliga.

MySQLFront - http://www.mysqlfront.de/
Ett program du kan använda dig av om du arbetar med dina databaser i Windows. Slutade utvecklas för ett tag sen, men utvecklingen har nu återupptagits.

PhpMyAdmin - http://www.phpwizard.net/projects/phpMyAdmin/
Då detta inte är ett körbart program utan en PHP-applikation går den bra att använda såväl under såväl Windows som Linux.
SQL - vad är det?
SQL är i sig ett språk som du använder för att komma åt information i databaser. Man brukar säga att MySQL är en SQL-databas. Med det menar man att MySQL stödjer språket SQL, du kan hämta information ur en MySQL-databas med hjälp av SQL. Alla stora databassystem har detta stödet, de är alltså SQL-databaser.

Jag säger samma sak om SQL som jag tidigare sa om MySQL. Ämnet är så omfattande att det i sig skulle kunna räcka för att skriva böcker om, detta kapitel om MySQL kommer inte att gå igenom SQL speciellt grundligt. Givetvis kommer vi använda det, det är nödvändigt, men vi kommer inte att gå in på de mer avancerade bitarna.

Grunderna

Dags att börja jobba på riktigt, vi kommer i detta avsnittet skapa en enkel databas och sedan göra några grundläggande operationer på denna.

Skapa databasen

Vår första databas kommer vara mycket enkelt och endast innehålla en tabell. Tabellen kommer att bestå av fem stycken namn med tillhörande e-post adresser. Jag börjar med att ge dig SQL-syntaxen för att skapa databasen.
CREATE DATABASE mindatabas;

Sedan har vi SQL-syntaxen för att skapa själva tabellen.
CREATE TABLE `adressbok` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY  ,
`namn` VARCHAR( 30 ) NOT NULL ,
`epost` VARCHAR( 30 ) NOT NULL
);
Använd dessa syntaxer till att först skapa databasen och sedan fylla den med en tabell i ditt databasverktyg. Eller om du vill jobba med klienten direkt går ju det också bra.

Anslut till databasen

Nu har du en databas som heter mindatabas och i den en tabell som heter adressbok. Nu skall jag visa dig hur du i PHP ansluter till denna databasen. Förutsättningen för att du skall kunna jobba med din databas genom PHP-skript är att du är ansluten till den, därför är detta det allra mest grundläggande du kan tänka dig.

Exempel
<?php

$db = mysql_connect('localhost', 'root', ''); 
      mysql_select_db('mindatabas'); 

?>
Svårare än så är det inte, nu är du ansluten till databasen. Funktionen för att ansluta till MySQL är som du ser mysql_connect(). Den tar tre argument, det första är servern databasen körs på (localhost om du sitter och utvecklar lokalt, hör med ditt webbhotell om du använder ett sådant), det andra är användaren (ofta root om du utvecklar lokalt, hör med ditt webbhotell om du använder ett sådant) och sist lösen ordet (samma där, hör med ditt webbhotell om du använder ett sådant). Nu är du ansluten till MySQL, men MySQL vet inte vilken databas du vill använda. För och bestämma databas använder du PHP-funktionen mysql_select_db(), i det utförandet vi använder den i tar den ett argument som är databasens namn.

Fyll databasen med information

Dags att fylla databasen med information. Jag väljer att göra detta via ett PHP-skript. Först skapar jag en vektor med ett antal namn och e-post adresser, sen loopar jag igenom denna och lägger in datan i databasen.

Exempel
<?php

$db = mysql_connect('localhost', 'root', ''); 
      mysql_select_db('mindatabas');

$data = array( 
    'Fredrik' => 'Fredrik@phpportalen.net', 
    'Nisse'   => 'Nisse@manpower.se', 
    'Lena'    => 'Lena@hennessida.com', 
    'Monica'  => 'Monica@enannansida.cc', 
    'Fredrik' => 'EnAnnanFredrik@msn.com'
); 

foreach ($data as $namn => $epost) {
    $result = mysql_query("INSERT INTO adressbok(namn, epost) VALUES('$namn', '$epost')") or die (mysql_error()); 
}

?>
Det som är intressant för detta exemplet är raden där vi anropar funktionen mysql_query(). Den tar som argument en SQL-fråga till den databasen du nu är ansluten mot. Den fråga som vi skickar är en INSERT, vi skall alltså infoga någonting i databasen. Vi specificerar vilken tabell det rör sig om genom nyckelordet INTO och vi meddelar också vilka fält vi vill fylla med information (namn samt epost). Anledningen till att vi inte vill fylla på fältet id är att detta fält är skapat som AUTO_INCREMENT ovan. Det betyder att id själv sätts till ett helttalsvärde ett högre än det tidigare högsta värdet i samma kolumn.

Vi applicerar också lite felhantering genom "or die (mysql_error())". Detta betyder att om mysql_query() inte lyckas med sin körning kommer skriptet avslutas, men innan det avslutas anropas funktionen mysql_error() som ger oss ett felmeddelande från MySQL-servern.

Hämta information

Nu har vi fyllt vår databas med lite information, dags att plocka ut den igen. Om jag skulle vilja plocka ut alla som heter Fredrik ur tabellen, hur gör jag då? Jo, det visar jag i exemplet nedan.

Exempel
<?PHP

$db = mysql_connect('localhost', 'root', ''); 
      mysql_select_db('mindatabas');

$result = mysql_query("SELECT * FROM adressbok WHERE namn='Fredrik'") or die (mysql_error()); 

while ($row = mysql_fetch_array($result)) {
    echo $row['namn'] . ': ' . $row['epost'] . '<br />';
}

?>
Du ser att jag även här använder mig av funktionen mysql_query(). SQL-frågan är dock annorlunda, denna gången är det ingen INSERT utan en SELECT. Vi skall alltså sortera ut information vi önskar ifrån tabellen. Själva sorteringen sker genom "WHERE namn='Fredrik'", alltså - välj ut de poster där namn är lika med "Fredrik". Resultatet av körningen sparas i variabeln $result, denna använder vi när vi skall skriva ut resultatet. $result är något som man brukar kalla en MySQL-resurs. Målet är att från denna skapa vektorer som innehåller vår information. I en sådan vektor är nyckeln tabellfältets namn och värdet dess innehåll. Det finns två stycken funktioner för att skapa sådana här vektorer. Den första är mysql_fetch_row(), den skapar en vektor som är enbart helttalsbaserad. Nycklarna i vektorn består alltså av heltal. Den andra funktionen är mysql_fetch_array(), den ger dig två vektorer. Den första vektorn är exakt samma som mysql_fetch_row() ger, den andra är den vi använder i exemplet ovan, den ger dig tabellfältets namn som nyckel och tabellfältets innehåll som värde.

Vi låter mysql_fetch_array() jobba sålänge som det finns någonting att jobba med. När det inte längre finns några poster att hämta ut ur $result ger funktionen FALSE och While-slingan avslutas.

Detta får avsluta min väldigt ytliga och snabba genomgång av MySQL. Den gör på inget vis MySQL-hantering i PHP rättvis. Det finns mycket mer och lära! Men jag hoppas jag har fångat ditt intresse för databashantering och att du går ut på egen hand och söker fakta.

Kapitlet avslutar också denna korta grundkurs i PHP. Jag hoppas att du lärt dig någonting nytt, det sägs ju att man var dag gör det. Och kom ihåg - man blir aldrig fullärd! Lycka till med ditt fortsatta PHP-programmerande och tveka inte att kontakta mig om det är någonting i skolan du undrar över.
Wiki-navigering
Wiki Index
Wiki Artiklar
Wiki Skolan
Wiki Guider
Wiki FAQ
Webbhotell
Domänregistrering
Wiki-sökning
Sök:
Dokumentalternativ
Redigera dokumentet
Visa dokumenthistorien
Senaste wiki-ändringar
Visa ändringarna
Inställningar
Wiki inställningar
Bra att veta
Vad är en Wiki?
Våra förhållningsregler
Trivselregler
Att använda Wikin
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB 2.0.4 © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic