exec($stmt); } } } /** * Kiểm tra xem các bảng chuẩn của Lab 05 đã đầy đủ cấu trúc và dữ liệu chưa */ function ensureLab05Schema(PDO $pdo): void { try { $requiredTables = ['categories', 'products', 'customers', 'orders', 'order_items']; foreach ($requiredTables as $table) { $stmt = $pdo->query("SHOW TABLES LIKE " . $pdo->quote($table)); if ($stmt->rowCount() === 0) { initLab05Database($pdo); return; } } // Kiểm tra cột category_id trong bảng products (phòng trường hợp bảng products được tạo từ Lab khác) $colCheck = $pdo->query("SHOW COLUMNS FROM `products` LIKE 'category_id'"); if ($colCheck->rowCount() === 0) { initLab05Database($pdo); return; } // Kiểm tra xem đã có dữ liệu mẫu chưa $countCategories = (int) $pdo->query("SELECT COUNT(*) FROM `categories`")->fetchColumn(); $countOrderItems = (int) $pdo->query("SELECT COUNT(*) FROM `order_items`")->fetchColumn(); if ($countCategories === 0 || $countOrderItems === 0) { initLab05Database($pdo); } } catch (PDOException $e) { initLab05Database($pdo); } } /** * Định dạng tiền tệ VNĐ */ function formatVnd($amount): string { return number_format((float)$amount, 0, ',', '.') . ' ₫'; } $pdo = null; $dbError = null; try { $pdo = getPdoConnection(true); ensureLab05Schema($pdo); } catch (Throwable $e) { $dbError = $e->getMessage(); }