File manager - Edit - /home/webapp69.cm.in.th/u69319090001/Shop 001/db.php
Back
<?php /** * ไฟล์เชื่อมต่อฐานข้อมูลด้วย PDO * รองรับทั้ง XAMPP ในเครื่อง และ Web Hosting ของวิทยาลัย (webapp69.cm.in.th) */ date_default_timezone_set('Asia/Bangkok'); // ตรวจสอบอัตโนมัติว่ารันบนเครื่อง Localhost (XAMPP) หรือบนเซิร์ฟเวอร์วิทยาลัย $is_local = in_array($_SERVER['HTTP_HOST'] ?? '', ['localhost', '127.0.0.1']) || strpos($_SERVER['HTTP_HOST'] ?? '', '192.168.') !== false; if ($is_local) { // สำหรับเครื่องตัวเอง (Localhost / XAMPP) $host = '127.0.0.1'; $db = 'preorder_db'; $user = 'root'; $pass = ''; $charset = 'utf8mb4'; } else { // สำหรับโฮสต์ติ้งของวิทยาลัย (webapp69.cm.in.th) $host = 'localhost'; $db = 'shop69319090001'; $user = 'u69319090001'; $pass = '@6901'; $charset = 'utf8mb4'; } // เชื่อมต่อตรงเข้าฐานข้อมูลของโฮสต์ทันที $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; try { $pdo = new PDO($dsn, $user, $pass, $options); // ตรวจสอบว่ามีตารางสินค้าหรือไม่ ถ้ายังไม่มีให้ดึงโครงสร้างตารางจาก schema.sql มาสร้างอัตโนมัติ $tableCheck = $pdo->query("SHOW TABLES LIKE 'products'"); $needsReset = ($tableCheck->rowCount() === 0); if ($needsReset) { $schemaPath = __DIR__ . '/schema.sql'; if (file_exists($schemaPath)) { $sql = file_get_contents($schemaPath); // ตัดคำสั่ง CREATE DATABASE และ USE ออก เพื่อให้ใช้ฐานข้อมูลของโฮสติ้งได้ตรงๆ โดยไม่ติด Permission $sql = preg_replace('/CREATE DATABASE.*?;/i', '', $sql); $sql = preg_replace('/USE `.*?`;/i', '', $sql); $pdo->exec($sql); } } // สร้างตาราง users สำหรับสมาชิกลูกค้า (หากยังไม่มี) $pdo->exec("CREATE TABLE IF NOT EXISTS `users` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL COMMENT 'ชื่อ-นามสกุล', `phone` VARCHAR(50) NOT NULL UNIQUE COMMENT 'เบอร์โทรศัพท์ (ใช้เข้าระบบได้)', `email` VARCHAR(191) NULL UNIQUE COMMENT 'อีเมล', `password` VARCHAR(255) NOT NULL COMMENT 'รหัสผ่าน Bcrypt', `address` TEXT NULL COMMENT 'ที่อยู่จัดส่งเริ่มต้น', `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;"); // ตรวจสอบและเพิ่มคอลัมน์ user_id ใน bookings $bookingUserColCheck = $pdo->query("SHOW COLUMNS FROM `bookings` LIKE 'user_id'"); if ($bookingUserColCheck->rowCount() === 0) { $pdo->exec("ALTER TABLE `bookings` ADD COLUMN `user_id` INT NULL AFTER `id`"); } // ตรวจสอบและเพิ่มคอลัมน์ category ใน products $productCategoryColCheck = $pdo->query("SHOW COLUMNS FROM `products` LIKE 'category'"); if ($productCategoryColCheck->rowCount() === 0) { $pdo->exec("ALTER TABLE `products` ADD COLUMN `category` VARCHAR(100) NOT NULL DEFAULT 'ทั่วไป' AFTER `name`"); } // ตรวจสอบและเพิ่มคอลัมน์ payment_method ใน bookings (ถ้าสร้างตารางไว้ก่อนหน้า) $pmColCheck = $pdo->query("SHOW COLUMNS FROM `bookings` LIKE 'payment_method'"); if ($pmColCheck->rowCount() === 0) { $pdo->exec("ALTER TABLE `bookings` ADD COLUMN `payment_method` VARCHAR(50) NOT NULL DEFAULT 'Bank Transfer' AFTER `slip_image_url`"); } } catch (\PDOException $e) { die("เชื่อมต่อฐานข้อมูลล้มเหลว: " . $e->getMessage()); }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.42 |
proxy
|
phpinfo
|
Settings