Jinsi ya Kutengeneza CRUD System kwa PDO
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.