Datubāzes ļauj uzglabāt, nolasīt un pārvaldīt strukturētus datus. PHP visbiežāk tiek lietots kopā ar MySQL vai MariaDB datubāzi, izmantojot PDO (PHP Data Objects) vai MySQLi saskarni.

Pieslēgšana datubāzei (PDO)

PDO ir ieteicamā metode — tā ir drošāka un atbalsta dažādas datubāzes:

<?php
$host = 'localhost';
$db = 'mana_datubaze';
$lietotājs = 'root';
$parole = '';

try {
$pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $lietotājs, $parole);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Pieslēgts!";
} catch (PDOException $e) {
die("Kļūda: " . $e->getMessage());
}
?>

Datu nolasīšana (SELECT)

<?php
$sql = "SELECT id, vards, epasts FROM lietotaji ORDER BY vards";
$rezultāts = $pdo->query($sql);

while ($rinda = $rezultāts->fetch(PDO::FETCH_ASSOC)) {
echo "{$rinda['vards']} - {$rinda['epasts']}<br>";
}

// Vai arī uzreiz visu masīvā
$lietotāji = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
?>

Sagatavotie vaicājumi (prepared statements)

Vienmēr lieto sagatavotus vaicājumus, ja vaicājumā iekļaujat lietotāja datus! Tas novērš SQL injekcijas uzbrukumus.

<?php
// Meklēt lietotāju pēc e-pasta
$sql = "SELECT * FROM lietotaji WHERE epasts = :epasts";
$stmt = $pdo->prepare($sql);
$stmt->execute(['epasts' => $epasts]);
$lietotājs = $stmt->fetch(PDO::FETCH_ASSOC);

if ($lietotājs) {
echo "Atrasts: " . $lietotājs['vards'];
} else {
echo "Lietotājs nav atrasts.";
}
?>

Datu ievietošana (INSERT)

<?php
$sql = "INSERT INTO lietotaji (vards, epasts, parole) VALUES (:vards, :epasts, :parole)";
$stmt = $pdo->prepare($sql);
$stmt->execute([
'vards' => $vards,
'epasts' => $epasts,
'parole' => password_hash($parole, PASSWORD_DEFAULT),
]);

$id = $pdo->lastInsertId(); // iegūt jaunā ieraksta ID
echo "Pievienots lietotājs ar ID: $id";
?>

Datu atjaunināšana (UPDATE)

<?php
$sql = "UPDATE lietotaji SET vards = :vards WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['vards' => 'Jānis', 'id' => 1]);

echo "Atjaunināts: " . $stmt->rowCount() . " ieraksts(i)";
?>

Datu dzēšana (DELETE)

<?php
$sql = "DELETE FROM lietotaji WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['id' => $id]);
?>

Praktisks piemērs: lietotāju saraksts

<?php
require_once 'config.php'; // $pdo pieslēgums
$lietotāji = $pdo->query("SELECT * FROM lietotaji ORDER BY id DESC")->fetchAll(PDO::FETCH_ASSOC);
?>

<h2>Lietotāji</h2>
<table border="1">
<tr><th>ID</th><th>Vārds</th><th>E-pasts</th></tr>
<?php foreach ($lietotāji as $l): ?>
<tr>
<td><?= $l['id'] ?></td>
<td><?= htmlspecialchars($l['vards']) ?></td>
<td><?= htmlspecialchars($l['epasts']) ?></td>
</tr>
<?php endforeach; ?>
</table>

Paroļu drošība

Nekad neglabājiet paroles kā vienkāršu tekstu! Izmantojiet PHP iebūvētās funkcijas:

<?php
// Saglabājot
$hash = password_hash($parole, PASSWORD_DEFAULT);

// Pārbaudot
if (password_verify($ievadītā_parole, $hash)) {
echo "Parole pareiza!";
} else {
echo "Nepareiza parole.";
}
?>