Innehållsförteckning
- Introduktion till databaser och MySQL
- Installera MySQL och skapa en databas
- Anslut till en MySQL-databas med PHP
- Skapa, läsa, uppdatera och ta bort data (CRUD)
- SQL-säkerhet och förberedda uttryck
- Praktiska exempel med MySQL
- Övning: Bygg en enkel användarhantering
- Sammanfattning
Hej och välkommen till lektion nio! I denna lektion ska vi titta på hur man arbetar med databaser i PHP, och specifikt med MySQL. Databaser är otroligt kraftfulla verktyg för att lagra stora mängder data, och att förstå hur man arbetar med databaser är avgörande för att bygga dynamiska webbsidor. Låt oss börja!
Introduktion till databaser och MySQL
En databas är ett organiserat sätt att lagra och hantera data. När vi arbetar med webbutveckling vill vi ofta lagra användardata, som registreringar, inlägg eller produktinformation. MySQL är ett av de mest populära databasystemen för att hantera denna typ av data. Det är ett relationsdatabashanteringssystem (RDBMS) som används tillsammans med PHP för att skapa dynamiska webbapplikationer.
Installera MySQL och skapa en databas
För att börja arbeta med MySQL behöver du installera MySQL-servern. Det enklaste sättet är att använda ett paket som XAMPP, som innehåller både Apache-webbservern, PHP och MySQL. När du har installerat MySQL kan du logga in på phpMyAdmin, som är ett webbaserat gränssnitt för att hantera dina databaser.
För att skapa en ny databas, öppna phpMyAdmin och välj ”Databaser”. Skriv in namnet på din databas och klicka på ”Skapa”. Nu har du en tom databas som vi kan fylla med tabeller och data.
Anslut till en MySQL-databas med PHP
För att ansluta till en MySQL-databas med PHP kan vi använda funktionen mysqli_connect()
. Här är ett enkelt exempel:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "min_databas";
// Skapa anslutningen
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Kontrollera anslutningen
if (!$conn) {
die("Anslutningen misslyckades: " . mysqli_connect_error());
}
echo "Anslutningen lyckades!";
?>
I detta exempel ansluter vi till en databas med namnet min_databas
. Om anslutningen lyckas kommer ett meddelande att visas. Om inte, kommer vi att få ett felmeddelande.
Skapa, läsa, uppdatera och ta bort data (CRUD)
När vi arbetar med databaser handlar det ofta om att skapa, läsa, uppdatera och ta bort data. Detta kallas ofta för CRUD-operationer:
- Create (skapa): Lägga till ny data i databasen.
- Read (läsa): Hämta data från databasen.
- Update (uppdatera): Ändra befintlig data.
- Delete (ta bort): Ta bort data från databasen.
Här är ett exempel på hur du kan skapa en ny tabell och lägga till en ny rad i den:
<?php
$sql = "CREATE TABLE Anvandare (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
namn VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";
if (mysqli_query($conn, $sql)) {
echo "Tabellen Anvandare skapades.";
} else {
echo "Fel: " . mysqli_error($conn);
}
// Lägg till en användare
$sql = "INSERT INTO Anvandare (namn, email) VALUES ('Alice', 'alice@example.com')";
if (mysqli_query($conn, $sql)) {
echo "Ny användare lades till.";
} else {
echo "Fel: " . mysqli_error($conn);
}
?>
I detta exempel skapar vi först en tabell som heter Anvandare
och sedan lägger vi till en ny användare i tabellen.
SQL-säkerhet och förberedda uttryck
När du arbetar med databaser är säkerhet en viktig fråga. En vanlig säkerhetsrisk är SQL-injektion, där en angripare skickar in skadlig SQL-kod genom användarinmatning. För att skydda mot detta bör du använda förberedda uttryck.
Här är ett exempel på hur du använder förberedda uttryck i PHP:
<?php
$stmt = $conn->prepare("INSERT INTO Anvandare (namn, email) VALUES (?, ?)");
$stmt->bind_param("ss", $namn, $email);
// Ställ in parametrarna och kör
$namn = "Bob";
$email = "bob@example.com";
$stmt->execute();
echo "Ny användare lades till.";
$stmt->close();
?>
I detta exempel använder vi prepare()
och bind_param()
för att skydda mot SQL-injektion. Detta är ett säkrare sätt att arbeta med användarinmatning.
Praktiska exempel med MySQL
Låt oss skapa ett praktiskt exempel där vi skapar en enkel användarhantering med MySQL. Vi vill kunna registrera nya användare och visa en lista över alla användare:
<?php
// Lägg till en ny användare
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$namn = $_POST["namn"];
$email = $_POST["email"];
$stmt = $conn->prepare("INSERT INTO Anvandare (namn, email) VALUES (?, ?)");
$stmt->bind_param("ss", $namn, $email);
$stmt->execute();
echo "Ny användare lades till.";
$stmt->close();
}
// Visa alla användare
$resultat = mysqli_query($conn, "SELECT * FROM Anvandare");
while ($rad = mysqli_fetch_assoc($resultat)) {
echo "Namn: " . $rad["namn"] . " - E-post: " . $rad["email"] . "<br>";
}
?>
Övning: Bygg en enkel användarhantering
Nu är det din tur att prova! Skapa en sida där användaren kan registrera sitt namn och sin e-postadress, och sedan visa en lista över alla registrerade användare.
- Skapa en ny fil: Skapa en ny fil och döp den till
anvandare.php
. - Skapa ett HTML-formulär som låter användaren fylla i sitt namn och sin e-postadress.
- Spara användarens uppgifter i en MySQL-databas och visa alla registrerade användare på sidan.
Här är en start:
<form action="anvandare.php" method="post">
<label for="namn">Namn:</label>
<input type="text" id="namn" name="namn">
<br>
<label for="email">E-post:</label>
<input type="email" id="email" name="email">
<br>
<input type="submit" value="Registrera">
</form>
Och här är PHP-koden för att hantera formuläret:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "min_databas";
// Skapa anslutningen
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Anslutningen misslyckades: " . mysqli_connect_error());
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$namn = $_POST["namn"];
$email = $_POST["email"];
$stmt = $conn->prepare("INSERT INTO Anvandare (namn, email) VALUES (?, ?)");
$stmt->bind_param("ss", $namn, $email);
$stmt->execute();
echo "Ny användare lades till.";
$stmt->close();
}
// Visa alla användare
$resultat = mysqli_query($conn, "SELECT * FROM Anvandare");
while ($rad = mysqli_fetch_assoc($resultat)) {
echo "Namn: " . htmlspecialchars($rad["namn"]) . " - E-post: " . htmlspecialchars($rad["email"]) . "<br>";
}
?>
Sammanfattning
I denna lektion har vi lärt oss om databaser och MySQL i PHP – hur vi kan ansluta till en databas, skapa, läsa, uppdatera och ta bort data, samt hur vi skyddar våra applikationer från SQL-injektion med hjälp av förberedda uttryck. Att kunna arbeta med databaser är en av de mest värdefulla färdigheterna för en webbutvecklare, och nu har du grunderna för att göra just detta.
I nästa lektion kommer vi att titta på objektorienterad programmering (OOP) i PHP – ett sätt att organisera och strukturera din kod för bättre skalbarhet och återanvändbarhet.
Vi ses i nästa lektion! 🚀