CRUD ni kifupi cha maneno Create, Read, Update, na Delete — misingi mikuu ya kudhibiti data kwenye mfumo wowote wa PHP unaounganishwa na database.

Katika makala hii, tutajifunza jinsi ya kutengeneza CRUD system kamili kwa PDO, hatua kwa hatua, tukitumia MySQL na PHP ya kisasa.

⚙️ 2. Muundo wa Project

Tengeneza mafaili yafuatayo kwenye folder lako la project (mfano: crud_pdo/):

crud_pdo/

├── config.php
├── index.php ← kuonyesha data (READ)
├── add.php ← kuongeza data (CREATE)
├── edit.php ← kuhariri data (UPDATE)
└── delete.php ← kufuta data (DELETE)

🧩 3. Kuandaa Database

Tumia SQL hii kuunda database na table ya mfano:

CREATE DATABASE school_db;

USE school_db;

CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
class VARCHAR(50) NOT NULL,
age INT NOT NULL
);

⚙️ 4. Faili la Kwanza: config.php

Hili ndilo faili la kuunganisha database kwa PDO.

<?php
$dsn = "mysql:host=localhost;dbname=school_db;charset=utf8mb4";
$username = "root";
$password = "";

try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("❌ Connection failed: " . $e->getMessage());
}
?>


✅ Faida:

Inatumia PDO kwa usalama.

Inatupa makosa kama exceptions ili kuyadhibiti kirahisi.

➕ 5. CREATE (Faili: add.php)
<?php include 'config.php'; ?>

<h2>➕ Add New Student</h2>
<form method="POST">
<input type="text" name="name" placeholder="Enter name" required><br><br>
<input type="text" name="class" placeholder="Enter class" required><br><br>
<input type="number" name="age" placeholder="Enter age" required><br><br>
<button type="submit">Save</button>
</form>

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$stmt = $pdo->prepare("INSERT INTO students (name, class, age) VALUES (:name, :class, :age)");
$stmt->execute([
'name' => $_POST['name'],
'class' => $_POST['class'],
'age' => $_POST['age']
]);

echo "<p style='color:green;'>✅ Student added successfully!</p>";
}
?>
<a href="index.php">🔙 Back to List</a>

📄 6. READ (Faili: index.php)
<?php include 'config.php'; ?>

<h2>📋 Students List</h2>
<a href="add.php">➕ Add New Student</a>
<br><br>

<table border="1" cellpadding="8">
<tr>
<th>ID</th>
<th>Name</th>
<th>Class</th>
<th>Age</th>
<th>Actions</th>
</tr>

<?php
$stmt = $pdo->query("SELECT * FROM students ORDER BY id DESC");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>
<td>{$row['id']}</td>
<td>{$row['name']}</td>
<td>{$row['class']}</td>
<td>{$row['age']}</td>
<td>
<a href='edit.php?id={$row['id']}'>✏️ Edit</a> |
<a href='delete.php?id={$row['id']}'
onclick='return confirm(\"Are you sure you want to delete this student?\")'>🗑️ Delete</a>
</td>
</tr>";
}
?>
</table>

✏️ 7. UPDATE (Faili: edit.php)
<?php
include 'config.php';
$id = $_GET['id'];

$stmt = $pdo->prepare("SELECT * FROM students WHERE id = :id");
$stmt->execute(['id' => $id]);
$student = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$student) {
die("❌ Student not found!");
}
?>

<h2>✏️ Edit Student</h2>
<form method="POST">
<input type="text" name="name" value="<?= htmlspecialchars($student['name']) ?>" required><br><br>
<input type="text" name="class" value="<?= htmlspecialchars($student['class']) ?>" required><br><br>
<input type="number" name="age" value="<?= htmlspecialchars($student['age']) ?>" required><br><br>
<button type="submit">Update</button>
</form>

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$stmt = $pdo->prepare("UPDATE students SET name = :name, class = :class, age = :age WHERE id = :id");
$stmt->execute([
'name' => $_POST['name'],
'class' => $_POST['class'],
'age' => $_POST['age'],
'id' => $id
]);

echo "<p style='color:green;'>✅ Student updated successfully!</p>";
}
?>
<a href="index.php">🔙 Back to List</a>

❌ 8. DELETE (Faili: delete.php)
<?php
include 'config.php';

$id = $_GET['id'];
$stmt = $pdo->prepare("DELETE FROM students WHERE id = :id");
$stmt->execute(['id' => $id]);

header("Location: index.php");
exit;
?>

🧠 9. Muhtasari wa Utendaji wa CRUD System
Kazi Faili Maelezo
➕ Create add.php Kuongeza mwanafunzi mpya.
📄 Read index.php Kuonyesha orodha ya wanafunzi.
✏️ Update edit.php Kuhariri taarifa zilizopo.
🗑️ Delete delete.php Kufuta rekodi iliyochaguliwa.
💡 10. Maboresho ya Ziada (Advanced Tips)

✅ Tumia Bootstrap au TailwindCSS kuboresha muonekano.
✅ Ongeza search box ili kutafuta wanafunzi.
✅ Tumia pagination kama data ni nyingi.
✅ Ongeza confirmation modal kwa delete.
✅ Tumia CSRF token kulinda form submissions.

✅ 11. Hitimisho

Kutumia PDO CRUD System ni njia ya kisasa na salama ya kujenga mifumo ya kudhibiti data.
Una:

Usalama kupitia prepared statements.

Urahisi wa kuendeleza mfumo.

Uwezo wa kubadilisha database engine bila kuandika upya code nyingi.

🔗 Tembelea:

👉 https://www.faulink.com/

Kwa mafunzo zaidi ya PHP, MySQL, PDO, na Web Systems Development ya kitaalamu.