ข้ามไปยังเนื้อหาหลัก
คู่มือระบบ เนื้อหาผ่านการตรวจสอบแล้ว

การ Query ข้อมูลจากฐานข้อมูล

บทนี้อธิบายวิธีการ Query ข้อมูลจากฐานข้อมูล MySQL โดยใช้ PHP ซึ่งเป็นพื้นฐานสำคัญในการสร้าง API ที่จัดการข้อมูลอย่างมีประสิทธิภาพ โดยเน้นการใช้คำสั่ง `SELECT` เ...

การ Query ข้อมูลจากฐานข้อมูล

หลังจากที่เราได้ทำการเชื่อมต่อกับฐานข้อมูล MySQL เรียบร้อยแล้ว ในบทนี้เราจะมาเรียนรู้วิธีการ Query หรือดึงข้อมูลจากฐานข้อมูลโดยใช้ PHP ซึ่งเป็นหัวใจสำคัญของการสร้าง API ที่สามารถจัดการข้อมูลได้อย่างมีประสิทธิภาพ

SELECT Statement

คำสั่ง SELECT เป็นคำสั่ง SQL พื้นฐานที่สุดที่ใช้ในการดึงข้อมูลจากฐานข้อมูล เราจะเริ่มจากตัวอย่างง่ายๆ และค่อยๆ เพิ่มความซับซ้อนขึ้นเรื่อยๆ

สมมติว่าเรามีตารางชื่อ users ในฐานข้อมูลของเรา ซึ่งมีโครงสร้างดังนี้:

  • id: INT (Primary Key, Auto Increment)
  • firstname: VARCHAR(255)
  • lastname: VARCHAR(255)
  • email: VARCHAR(255)

หากเราต้องการดึงข้อมูลทั้งหมดจากตาราง users เราสามารถใช้คำสั่ง SQL ดังนี้:

SELECT * FROM users;

ใน PHP เราสามารถใช้คำสั่งนี้ได้ดังนี้:

<?php

// ข้อมูลการเชื่อมต่อฐานข้อมูล (แก้ไขให้ถูกต้อง)
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";

// สร้าง connection
$conn = new mysqli($servername, $username, $password, $dbname);

// ตรวจสอบ connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// คำสั่ง SQL
$sql = "SELECT * FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // วนลูปเพื่อแสดงข้อมูลแต่ละแถว
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();

?>

คำอธิบาย:

  • เราทำการสร้าง connection กับฐานข้อมูลเหมือนในบทก่อนหน้า
  • $sql = "SELECT * FROM users";: กำหนดคำสั่ง SQL ที่เราต้องการ execute
  • $result = $conn->query($sql);: ส่งคำสั่ง SQL ไปยังฐานข้อมูลและเก็บผลลัพธ์ไว้ในตัวแปร $result
  • $result->num_rows > 0: ตรวจสอบว่ามีข้อมูลที่ถูกดึงกลับมาหรือไม่
  • $row = $result->fetch_assoc();: ดึงข้อมูลแต่ละแถวในรูปแบบ associative array (เข้าถึงข้อมูลด้วยชื่อ column)
  • echo ...: แสดงข้อมูลที่ดึงมา
  • $conn->close();: ปิด connection เมื่อใช้งานเสร็จ

ถ้าเราต้องการดึงข้อมูลเฉพาะบาง column เท่านั้น เช่น firstname และ email เราสามารถแก้ไขคำสั่ง SQL ได้ดังนี้:

SELECT firstname, email FROM users;

และใน PHP:

<?php

// (ส่วนของการเชื่อมต่อฐานข้อมูลเหมือนเดิม)

$sql = "SELECT firstname, email FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "Name: " . $row["firstname"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();

?>

WHERE Clause

WHERE clause ใช้ในการกำหนดเงื่อนไขในการดึงข้อมูล เช่น เราต้องการดึงข้อมูลของผู้ใช้ที่มี firstname เท่ากับ "John" เท่านั้น

SELECT * FROM users WHERE firstname = 'John';

ใน PHP:

<?php

// (ส่วนของการเชื่อมต่อฐานข้อมูลเหมือนเดิม)

$sql = "SELECT * FROM users WHERE firstname = 'John'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();

?>

เราสามารถใช้ operators ต่างๆ ใน WHERE clause ได้ เช่น:

  • = (เท่ากับ)
  • != หรือ <> (ไม่เท่ากับ)
  • > (มากกว่า)
  • < (น้อยกว่า)
  • >= (มากกว่าหรือเท่ากับ)
  • <= (น้อยกว่าหรือเท่ากับ)
  • LIKE (ใช้สำหรับการ matching รูปแบบ)
  • IN (ตรวจสอบว่าค่าอยู่ในชุดของค่าที่กำหนดหรือไม่)
  • BETWEEN (ตรวจสอบว่าค่าอยู่ระหว่างช่วงที่กำหนดหรือไม่)

ตัวอย่างการใช้ LIKE เพื่อค้นหาผู้ใช้ที่มี firstname ขึ้นต้นด้วย "J":

SELECT * FROM users WHERE firstname LIKE 'J%';

ใน PHP:

<?php

// (ส่วนของการเชื่อมต่อฐานข้อมูลเหมือนเดิม)

$sql = "SELECT * FROM users WHERE firstname LIKE 'J%'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();

?>

เรายังสามารถใช้ AND และ OR เพื่อรวมเงื่อนไขหลายๆ เงื่อนไขเข้าด้วยกันได้

ตัวอย่าง: ดึงข้อมูลของผู้ใช้ที่มี firstname เท่ากับ "John" และ lastname เท่ากับ "Doe":

SELECT * FROM users WHERE firstname = 'John' AND lastname = 'Doe';

ORDER BY Clause

ORDER BY clause ใช้ในการเรียงลำดับข้อมูลที่ถูกดึงกลับมา เราสามารถเรียงลำดับตาม column ใดก็ได้ ไม่ว่าจะเรียงจากน้อยไปมาก (ASC - Ascending) หรือจากมากไปน้อย (DESC - Descending)

ตัวอย่าง: เรียงลำดับผู้ใช้ตาม firstname จากน้อยไปมาก:

SELECT * FROM users ORDER BY firstname ASC;

ใน PHP:

<?php

// (ส่วนของการเชื่อมต่อฐานข้อมูลเหมือนเดิม)

$sql = "SELECT * FROM users ORDER BY firstname ASC";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

$conn->close();

?>

ถ้าเราต้องการเรียงลำดับจากมากไปน้อย เราสามารถใช้ DESC:

SELECT * FROM users ORDER BY firstname DESC;

เราสามารถเรียงลำดับตามหลาย column ได้ โดยจะเรียงลำดับตาม column แรกก่อน แล้วจึงเรียงลำดับตาม column ถัดไปในกรณีที่ column แรกมีค่าเท่ากัน

ตัวอย่าง: เรียงลำดับตาม firstname จากน้อยไปมาก และถ้า firstname เท่ากัน ให้เรียงตาม lastname จากน้อยไปมาก:

SELECT * FROM users ORDER BY firstname ASC, lastname ASC;

ในบทนี้ เราได้เรียนรู้วิธีการ Query ข้อมูลจากฐานข้อมูล MySQL โดยใช้ PHP ซึ่งครอบคลุมถึงการใช้ SELECT statement, WHERE clause และ ORDER BY clause ในบทถัดไป เราจะมาเรียนรู้วิธีการเพิ่มข้อมูลลงในฐานข้อมูล

Office.in.th Custom Service

ต้องการพัฒนาระบบหรือปรับแต่งจากโครงสร้างนี้?

Office.in.th รับพัฒนาและออกแบบ Enterprise Web Application, API Integration และระบบบริหารงานภาครัฐ/เอกชน พร้อมการสนับสนุนระยะยาว

ดูบริการรับพัฒนาซอฟต์แวร์