connect_error) { error_log("Database Connection Failed: " . $conn->connect_error); die("Database connection failed. Please contact administrator."); } // Set charset to utf8mb4 for proper Tamil text support if (!$conn->set_charset("utf8mb4")) { error_log("Error loading character set utf8mb4: " . $conn->error); } } catch (Exception $e) { error_log("Database Exception: " . $e->getMessage()); die("Database error occurred. Please contact administrator."); } } return $conn; } // Close database connection function closeDBConnection() { $conn = getDBConnection(); if ($conn) { $conn->close(); } } // Execute a prepared statement safely function executeQuery($query, $types = "", $params = []) { $conn = getDBConnection(); $stmt = $conn->prepare($query); if (!$stmt) { error_log("Prepare failed: " . $conn->error); return false; } if (!empty($types) && !empty($params)) { $stmt->bind_param($types, ...$params); } $result = $stmt->execute(); if (!$result) { error_log("Execute failed: " . $stmt->error); return false; } return $stmt; } // Fetch single row function fetchSingle($query, $types = "", $params = []) { $stmt = executeQuery($query, $types, $params); if (!$stmt) { return null; } $result = $stmt->get_result(); $row = $result->fetch_assoc(); $stmt->close(); return $row; } // Fetch all rows function fetchAll($query, $types = "", $params = []) { $stmt = executeQuery($query, $types, $params); if (!$stmt) { return []; } $result = $stmt->get_result(); $rows = $result->fetch_all(MYSQLI_ASSOC); $stmt->close(); return $rows; } // Get last insert ID function getLastInsertId() { $conn = getDBConnection(); return $conn->insert_id; } // Test database connection function testConnection() { try { $conn = getDBConnection(); return $conn->ping(); } catch (Exception $e) { return false; } } ?>