PDO (PHP Data Objects) inatoa njia salama na flexible ya kuunganishwa na databases.
Error handling ni muhimu ili:

Kuelewa tatizo linapotokea.

Kuzuia script kushindwa bila taarifa.

Kuandika logs za errors kwa debugging.

PDO ina modes tatu kuu za error handling:

Silent – errors hazionekani, function inarudisha false.

Warning – PHP inatoa warning.

Exception – PDO inatupa exception (PDOException) (inapendekezwa).

⚙️ 2. Kuanzisha PDO na Exception Mode
<?php
$dsn = "mysql:host=localhost;dbname=school_db;charset=utf8mb4";
$username = "root";
$password = "";

try {
$pdo = new PDO($dsn, $username, $password);

// Set error mode to Exception
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

echo "✅ Connection successful!";
} catch (PDOException $e) {
// Catch connection errors
echo "❌ Connection failed: " . $e->getMessage();
}
?>


💡 Maelezo:

PDO::ERRMODE_EXCEPTION inatupa exceptions badala ya silent failures.

Inasaidia debugging na better error management.

🧩 3. Handling Query Errors
<?php
try {
$stmt = $pdo->prepare("INSERT INTO students (name, class, gender, age) VALUES (:name, :class, :gender, :age)");
$stmt->execute([
'name' => "John Doe",
'class' => "Form 1",
'gender' => "Male",
'age' => 15
]);
echo "✅ Student added successfully!";
} catch (PDOException $e) {
// Handle query error
echo "❌ Error adding student: " . $e->getMessage();
}
?>


💡 Faida:

Errors hazifichi.

Unaweza kutoa friendly message kwa user, na log error kwa admin.

📝 4. Logging Errors Badala ya Displaying
<?php
try {
$stmt = $pdo->query("SELECT * FROM non_existing_table");
} catch (PDOException $e) {
// Log error to file instead of displaying
file_put_contents('pdo_errors.log', $e->getMessage()."\n", FILE_APPEND);
echo "❌ Something went wrong. Please try again later.";
}
?>


💡 Faida:

Users hawataona technical errors.

Admin au developer anaweza kuona logs kwenye pdo_errors.log.

🔄 5. Transactions na Error Handling
<?php
try {
$pdo->beginTransaction();

$pdo->exec("UPDATE accounts SET balance = balance - 100 WHERE id=1");
$pdo->exec("UPDATE accounts SET balance = balance + 100 WHERE id=2");

$pdo->commit();
echo "✅ Transaction completed successfully!";
} catch (PDOException $e) {
$pdo->rollBack(); // Undo changes if error occurs
echo "❌ Transaction failed: " . $e->getMessage();
}
?>


💡 Maelezo:

Transaction inahakikisha data integrity.

Errors zinazosababisha rollback huzuia data kuwa corrupted.

🧠 6. Vidokezo vya Best Practices

Always use try-catch blocks kwa queries muhimu.

Set PDO error mode to Exception.

Log errors to file badala ya kuonyesha kwa user.

Use transactions kwa operations multiple queries zinahusiana.

Validate input kabla ya query ili kupunguza errors.

✅ 7. Hitimisho

PDO error handling ni muhimu kwa secure na robust PHP applications.

try-catch, PDO::ERRMODE_EXCEPTION, na logging ni msingi wa debugging na data integrity.

Kwa njia hii, unaweza kudhibiti connection errors, query errors, na transaction errors kwa ufanisi.

🔗 Tembelea:

👉 https://www.faulink.com/

Kwa mafunzo zaidi ya PHP, PDO, MySQL, na error handling techniques.