• ติดตามบน
ตอนที่ 5: การแก้ไขข้อมูล (Update Data) และการส่งค่า ID ผ่าน URL

ตอนที่ 5: การแก้ไขข้อมูล (Update Data) และการส่งค่า ID ผ่าน URL

Chalothorn Kosakul 02-02-2026 56

ตอนที่ 5: การแก้ไขข้อมูล (Update Data) และการส่งค่า ID ผ่าน URL

สวัสดีครับนักเรียน ถ้าเปรียบฐานข้อมูลเป็นสมุดบันทึก ตอนที่ 3 เรา “เขียนข้อมูลลงสมุด” ตอนที่ 4 เรา “เปิดอ่านข้อมูล” มาถึงตอนนี้เราจะทำสิ่งที่ยากขึ้นอีกขั้น คือ “แก้ข้อความที่เคยเขียนไปแล้ว”

หัวใจสำคัญคือคำถามว่า / เราจะรู้ได้อย่างไรว่า “ต้องแก้แถวไหน?” คำตอบคือการส่งค่า ID ติดไปกับลิงก์นั่นเองครับ


วัตถุประสงค์ของบทนี้

  • เข้าใจการส่งค่าผ่าน URL (Query String)
  • ใช้ $_GET รับค่า ID
  • เรียนรู้คำสั่ง SQL UPDATE
  • สร้างฟอร์มที่ดึงข้อมูลเดิมมาแสดง
  • รู้จักจุดเสี่ยงด้านความปลอดภัย

1. เพิ่มปุ่ม “แก้ไข” ในตาราง

จากไฟล์ display_users.php เราต้องสร้างลิงก์ที่พก ID ไปด้วย


// ภายใน while loop
echo "<td>
        <a href='edit_user.php?id=".$row['id']."'>
        แก้ไข</a>
      </td>";

ผลลัพธ์จะได้ URL ประมาณนี้

edit_user.php?id=5

> นี่แหละครับที่เรียกว่า Query String PHP จะรับค่าผ่าน $_GET['id']


2. สร้างหน้าแก้ไข (edit_user.php)

หน้านี้ทำ 2 หน้าที่ในไฟล์เดียว

  1. เปิดมาครั้งแรก → ดึงข้อมูลเดิมมาโชว์
  2. กดบันทึก → อัปเดตข้อมูล
<?php
require_once 'db_config.php';

// --- ส่วนที่ 1 รับค่า ID ---
$id = $_GET['id'];

// --- ส่วนที่ 2 ดึงข้อมูลเดิม ---
$sql = "SELECT * FROM users WHERE id = $id";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);

// --- ส่วนที่ 3 เมื่อกดบันทึก ---
if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $new_user  = mysqli_real_escape_string($conn, $_POST['username']);
    $new_email = mysqli_real_escape_string($conn, $_POST['email']);

    $sql_update =
      "UPDATE users
       SET username='$new_user',
           email='$new_email'
       WHERE id=$id";

    if (mysqli_query($conn, $sql_update)) {
        echo "<script>
            alert('แก้ไขข้อมูลเรียบร้อย!');
            window.location='display_users.php';
        </script>";
    }
}
?>

<form method="POST">
ชื่อผู้ใช้:
<input type="text" name="username"
value="<?php echo $row['username']; ?>">

อีเมล:
<input type="email" name="email"
value="<?php echo $row['email']; ?>">

<button type="submit">ยืนยันการแก้ไข</button>
</form>

3. ทำความเข้าใจ UPDATE 

รูปแบบมาตรฐานคือ

UPDATE ตาราง SET คอลัมน์ = ค่าใหม่ WHERE เงื่อนไข

คำเตือนที่ครูย้ำทุกเทอม
ลืม WHERE = หายนะ! ข้อมูลทั้งตารางจะถูกเปลี่ยนเหมือนกันหมดทันที

จุดที่เด็กพลาดบ่อย

  • ลืมส่ง id ไปกับลิงก์
  • พิมพ์ $_GET ผิดเป็น $_POST
  • ไม่มี WHERE ใน UPDATE
  • เปิดหน้า edit โดยไม่มี id

ครูเห็นนักเรียนมาเยอะเพราะ 4 ข้อนี้


แบบฝึกหัด

  1. ความปลอดภัย
    ใช้ is_numeric($id)
    ถ้าไม่ใช่ตัวเลข → ให้เด้งกลับ
  2. เพิ่มปุ่มยกเลิก
    กดแล้วกลับ display_users.php
  3. ปรับความปลอดภัยให้ทราบการแก้ไขข้อมูล
    เพิ่มฟิลด์ updated_at
    บันทึกเวลาที่แก้ไขล่าสุด

สรุปจากครูท้ายคาบ

ตอนนี้ระบบของเราเกือบครบแล้ว

  • เพิ่มข้อมูลได้ ✔
  • แสดงข้อมูลได้ ✔
  • แก้ไขข้อมูลได้ ✔

เหลือด่านสุดท้ายของ CRUD คือ การลบข้อมูล (DELETE)

ตอนที่ 6: การลบข้อมูล (Delete) และการยืนยันก่อนลบด้วย JavaScript
- ลบอย่างปลอดภัย - ยืนยันก่อนลบ - ป้องกันการกดผิด

ใครมาถึงตรงนี้ได้ ครูขอชมเลยว่า “เก่งมาก”  อีกก้าวเดียวก็พร้อมทำโปรเจกต์จบแล้วครับ!

แท็กที่เกี่ยวข้อง :

แชร์บทความนี้