Använda en MySQL-databas i PHP
Förord
För att kunna utnyttja scriptspråk såsom PHP, ASP, JSP och så vidare maximalt krävs det att man arbetar mot någon slags databas. En SQL-databas är nog enklast att använda, och när man vet att både PHP och databasen MySQL är hundra procent gratis så är väl valet inte speciellt svårt att göra. I den här artikeln tänker jag gå igenom hur du kopplar upp dig mot en MySQL-databas, skriver ut från databasen, raderar poster i databasen samt hur du redigerar dem. Grundläggande kunskaper inom PHP och SQL krävs för att utnyttja artikelns material till fullo.Innehåll
»»
»
»
»
»
»
Skapa en anslutning
PHP är ett mycket enkelt scriptspråk och det krävs bara ett få antal rader programmeringskod för att ansluta sig till sin databas som i det här fallet är MySQL. Funktionen för att koppla upp sig mot databasen ser ut såhär:
$db_link = mysql_connect(”server”, ”användarnamn”, ”lösenord”);
?>
Argumenten som funktionen vill ha är adressen till MySQL-servern, om du har din server lokalt så räcker det vanligtvis med att skriva ”localhost” eller ”127.0.0.1” där, efter det vill funktionen även ha ett användarnamn och ett lösenord till MySQL-servern. Dessa tre argument måste finnas med för att en anslutning mot databasen ska kunna öppnas. Anslutningen finns nu dessutom sparad i en variabel, $db_link, vilket är smidigt om man kanske arbetar mot flera olika MySQL-servrar samtidigt.
Därefter måste vi tala om för MySQL vilken databas vi vill arbeta mot, detta görs väldigt smidigt med funktionen mysql_select_db(). Denna funktion kräver två argument, namnet på databasen samt länken till servern. Så här kan det se ut:
mysql_select_db(”databasnamn”, $db_link);
?>
Eftersom vi har server informationen sparad i variabeln $db_link, så kan vi enkelt referera till den i den här funktionen där vi väljer databas.
Hämta ut data
Sådär, nu är MySQL-databasen redo att arbeta för oss. Det är här SQL kommer in i bilden, när vi ska börja ställa olika förfråganden mot databasen, så att vi senare kan plocka ut de data som vi önskar. Funktionen som via använder är vi ställer en förfrågan mot databasen heter mysql_query(), och används på följande sätt:
$query = ”SELECT * FROM tabell”;
$result = mysql_query($query, $db_link);
?>
Vi börjar med att ge variabeln $query ett SQL-värde, och därefter exekveras den i variabeln $result med funktionen mysql_query() som vi beskrev innan. Svårare än så här är det inte att hämta ut de poster vi önskar, men att sedan lista dem på ett snyggt sätt i en webbsida är kanske lite klurigare. Då måste man på något sätt använda sig av en slinga (om man ska visa flera databasposter på en gång), till exempel med en for-slinga, while-slinga och så vidare. I det här exemplet använder jag dock en while-slinga, för att jag anser att det är smidigare i detta fallet.
$query = ”SELECT * FROM tabell”;
$result = mysql_query($query, $db_link);
while($data = mysql_fetch_array($result))
{
echo $data[“databasfalt”].”
\n”;
}
?>
Jag deklarerar här variabeln $data till att ta emot den array som $result ger oss genom att plocka ut de databasposter vi anger i variabeln $query (detta görs som ni kan se ovan med funktionen myql_fetch_array()). Sedan skriver slingan ut databas fältet ”databasfalt” och därefter en rad brytning för att skilja databasposterna åt.
Radera data
Att radera i en databas är busenkelt, det enda som egentligen krävs är att man vet ID-numret eller något fält i den tabellen så att man kan lokalisera databasposten man önskar att radera. Annars så sker det som vanligt när man exekverar någon SQL-kod, i funktionen mysql_query(). Exempel:
$query = ”DELETE FROM tabell WHERE id = ‘1’”;
$result = mysql_query($query, $db_link);
?>
Så kommer databasposten att raderas. Svårare än så är det inte.
Redigera data
Redigering av databasposter sker precis på samma sätt, fast med annan SQL-kod givetvis. Även här krävs det så klart att man vet ID-numret eller något fält i den tabell så att man kan lokalisera databasposten man önskar att redigera. Exempel:
$query = ”UPDATE tabell SET databasfalt = ‘hejsan’ WHERE id = ‘1’”;
$result = mysql_query($query, $db_link);
?>
Med dettta exempel så ändrar vi värde på databasfältet ”databasfalt” till ”hejsan”. Det krävs som sagt att du kan behärska SQL för att kunna få ett ordentligt grepp om det här, men jag vet att det finns många bra artiklar om det här på Pellesoft.nu så vägen dit är inte speciellt lång.
Stänga anslutningen
När man är klar med de transaktioner som man vill göra med databasen, så är det prestandamässigt bättre om man även stänger databasen efter sig. PHP motorn gör dock detta automatiskt när sista programmeringskodraden är nådd, men det är en onödig procedur som PHP motorn måste göra och det är bättre att man stänger den själv.
mysql_close($db_link);
?>
Andra nyttiga funktioner
Här nedan listar jag några andra databasfunktioner som brukar användas i kombination med PHP och MySQL. Fler användbara funktioner kan du hitta i PHP:s välskrivna manual, som du finner på http://www.php.net.
· mysql_num_rows($result)
Denna funktion kan man använda för att få reda på hur många databasposter som påverkades av din SQL-sträng. Du kan till exempel ta reda på hur många inlägg det finns i en gästbok väldigt smidigt med denna funktion.
· mysql_free_result($result)
Den här funktionen kan vara bra att använda när man arbetar med större webbplatser. Funktionen frigör helt enkelt minnet som resultatet från MySQL-databasen gav oss. Arbetar du med mindre applikationer så behöver du normalt inte använda den, men är man rädd för att minnet ska ta slut så kan den vara värd att använda sig av.
· mysql_fetch_row($result)
Detta är en funktion som är ett alternativ till mysql_fetch_array() som vi använde oss av när vi skrev ut databasposter till klienten längre upp i artikeln. Enda skillnaden är att med mysql_fetch_array() så skriver man ut namnet på databasfältet, men med mysql_fetch_row() så skriver man ut databasfältet med nummer istället i den ordning som de finns i databasen. Vilken funktion man använder är givetvis upp till en själv, men jag föredrar att använda mysql_fetch_array() av det enkla skälet att det är enklast, det blir lite krångligt efter ett tag att hålla reda på i vilken ordning databasfältet står, tro mig. Men funktionen finns till för er som föredrar det. Prestandamässigt mellan de två funktionerna så är det ingen större skillnad.
0 Kommentarer