PHP เป็นภาษายอดนิยมสำหรับทำเว็บฝั่งเซิร์ฟเวอร์ (Backend) เว็บดัง ๆ อย่าง WordPress และ Facebook ยุคแรกก็ใช้ PHP บทความนี้จะปูพื้นฐาน PHP ให้คุณเขียนเว็บที่ประมวลผลข้อมูลและเชื่อมฐานข้อมูลได้จริง ═══════════════════════════════════════ 📌 1. PHP คืออะไร ═══════════════════════════════════════ PHP ย่อมาจาก PHP: Hypertext Preprocessor เป็นภาษาโปรแกรมที่ทำงานฝั่ง "เซิร์ฟเวอร์" (Server-side) ต่างจาก JavaScript ที่ทำงานในเบราว์เซอร์ • PHP ประมวลผลบนเซิร์ฟเวอร์ แล้วส่ง HTML กลับมาที่เบราว์เซอร์ • ใช้ทำระบบล็อกอิน จัดการข้อมูล เชื่อมฐานข้อมูล MySQL • ไฟล์ PHP มีนามสกุล .php และต้องรันผ่านเซิร์ฟเวอร์ (เช่น XAMPP) ═══════════════════════════════════════ ✏️ 2. โครงสร้างพื้นฐาน ═══════════════════════════════════════ โค้ด PHP เขียนภายในแท็ก <?php ... ?> แทรกในไฟล์ HTML ได้ ```php <?php echo "สวัสดีชาวโลก"; // แสดงข้อความออกหน้าเว็บ ?> <!-- แทรกใน HTML ได้ --> <h1><?php echo "ยินดีต้อนรับ"; ?></h1> ``` • <?php เปิด ... ?> ปิด • echo ใช้แสดงผล • ทุกคำสั่งจบด้วย ; (semicolon) • // คือคอมเมนต์บรรทัดเดียว, /* */ คอมเมนต์หลายบรรทัด ═══════════════════════════════════════ 📦 3. ตัวแปรและชนิดข้อมูล ═══════════════════════════════════════ ตัวแปรใน PHP ขึ้นต้นด้วย $ เสมอ ```php <?php $name = "สมชาย"; // String (ข้อความ) $age = 25; // Integer (จำนวนเต็ม) $price = 99.50; // Float (ทศนิยม) $isActive = true; // Boolean (จริง/เท็จ) echo $name; // สมชาย echo "อายุ " . $age; // ต่อข้อความด้วยจุด (.) echo "ชื่อ $name อายุ $age"; // แทรกตัวแปรใน "..." ได้ ?> ``` ═══════════════════════════════════════ ➕ 4. ตัวดำเนินการ (Operators) ═══════════════════════════════════════ ```php <?php // คำนวณ $sum = 5 + 3; // 8 $mod = 10 % 3; // 1 (เศษจากการหาร) // ต่อข้อความ $full = "สม" . "ชาย"; // สมชาย // เปรียบเทียบ (คืน true/false) // == เท่ากัน (ค่า) // === เท่ากันและชนิดเดียวกัน (แนะนำ) // != ไม่เท่ากัน, > < >= <= // ตรรกะ: &&(และ) ||(หรือ) !(ไม่) ?> ``` ═══════════════════════════════════════ 🔀 5. เงื่อนไขและการวนซ้ำ ═══════════════════════════════════════ if / else: ```php <?php $score = 75; if ($score >= 80) { echo "เกรด A"; } elseif ($score >= 70) { echo "เกรด B"; } else { echo "ต้องพยายามอีก"; } ?> ``` Loop (for และ foreach): ```php <?php // for วนตามจำนวนรอบ for ($i = 1; $i <= 5; $i++) { echo "รอบที่ $i <br>"; } // while วนขณะเงื่อนไขจริง $n = 0; while ($n < 3) { echo $n; $n++; } ?> ``` ═══════════════════════════════════════ 📚 6. Array (อาร์เรย์) ═══════════════════════════════════════ ```php <?php // Array แบบมี index $fruits = ["แอปเปิล", "กล้วย", "ส้ม"]; echo $fruits[0]; // แอปเปิล echo count($fruits); // 3 (จำนวนสมาชิก) // วนแสดงทุกตัวด้วย foreach foreach ($fruits as $fruit) { echo $fruit . "<br>"; } // Associative Array (คีย์-ค่า) $person = [ "name" => "สมชาย", "age" => 25 ]; echo $person["name"]; // สมชาย foreach ($person as $key => $value) { echo "$key : $value <br>"; } ?> ``` ═══════════════════════════════════════ 🔧 7. ฟังก์ชัน (Function) ═══════════════════════════════════════ ```php <?php // ประกาศฟังก์ชัน function add($a, $b) { return $a + $b; } echo add(5, 3); // 8 // ฟังก์ชันมีค่าเริ่มต้น function greet($name = "เพื่อน") { return "สวัสดี $name"; } echo greet("สมหญิง"); // สวัสดี สมหญิง echo greet(); // สวัสดี เพื่อน ?> ``` ═══════════════════════════════════════ 📝 8. รับข้อมูลจากฟอร์ม (Form Handling) ═══════════════════════════════════════ ไฟล์ HTML (ฟอร์ม): ```html <form action="process.php" method="POST"> <input type="text" name="username"> <input type="password" name="password"> <button type="submit">เข้าสู่ระบบ</button> </form> ``` ไฟล์ process.php (รับข้อมูล): ```php <?php // รับค่าจากฟอร์มที่ส่งแบบ POST $username = $_POST["username"]; $password = $_POST["password"]; // ตรวจสอบก่อนใช้เสมอ (กันค่าว่าง) if (!empty($username)) { echo "สวัสดีคุณ " . htmlspecialchars($username); } else { echo "กรุณากรอกชื่อผู้ใช้"; } ?> ``` *** ความปลอดภัย: ใช้ htmlspecialchars() กันโค้ดอันตราย (XSS) เสมอ *** ═══════════════════════════════════════ 🗄️ 9. เชื่อมต่อฐานข้อมูล MySQL (PDO) ═══════════════════════════════════════ ```php <?php // เชื่อมต่อฐานข้อมูลด้วย PDO (แนะนำ) $host = "localhost"; $db = "mydatabase"; $user = "root"; $pass = ""; try { $pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "เชื่อมต่อสำเร็จ"; } catch (PDOException $e) { echo "เชื่อมต่อล้มเหลว: " . $e->getMessage(); } ?> ``` ดึงข้อมูลแบบปลอดภัย (Prepared Statement): ```php <?php // ดึงข้อมูลผู้ใช้ตาม id (กัน SQL Injection ด้วย ?) $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?"); $stmt->execute([$id]); $user = $stmt->fetch(PDO::FETCH_ASSOC); echo $user["name"]; // ดึงหลายแถว $stmt = $pdo->query("SELECT * FROM users"); $users = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($users as $u) { echo $u["name"] . "<br>"; } ?> ``` *** สำคัญ: ใช้ Prepared Statement (?) เสมอ เพื่อกัน SQL Injection *** ═══════════════════════════════════════ ✅ 10. สรุปและเส้นทางต่อไป ═══════════════════════════════════════ • ตัวแปรขึ้นต้นด้วย $ และทุกคำสั่งจบด้วย ; • echo แสดงผล, . ต่อข้อความ • รับฟอร์มด้วย $_POST / $_GET และตรวจสอบข้อมูลเสมอ • เชื่อม MySQL ด้วย PDO + Prepared Statement (ปลอดภัยกว่า) • ใช้ htmlspecialchars() กัน XSS และ ? กัน SQL Injection เส้นทางต่อไปหลังพื้นฐานแน่น: PHP พื้นฐาน → PDO/MySQL → OOP (คลาส/ออบเจกต์) → MVC → Laravel Framework (ทำเว็บใหญ่ได้เร็ว) จำไว้: PHP + MySQL คือคู่หูสร้างเว็บไดนามิกที่ทรงพลัง ลองทำระบบ CRUD เล็ก ๆ (เพิ่ม-อ่าน-แก้-ลบ) จะเข้าใจภาพรวมทันที 🐘