Devdit
 

วิธีการสร้าง API ด้วย PHP MySQL

1K

บทความนี้สอนสร้าง API ด้วย PHP ฐานข้อมูล MySQL โดย API ที่เราจะสร้างทำหน้าที่ CRUD (Create, Red, Update, Delete) โดยใช้คำสั่ง SQL ร่วมกับ mysqli และสอนการใช้คำสั่ง curl เพื่อทดสอบ API ดังกล่าวทั้งการสื่อสารแบบ POST และแบบ GET สามารถเขียนโปรแกรมได้ดังนี้

 

ตัวอย่าง วิธีสร้าง API ด้วย PHP MySQL

1. สร้างฐานข้อมูลชื่อ mydatabase และรันคำสั่ง SQL ด้านล่างเพื่อสร้างตาราง product และเพิ่มข้อมูลตัวอย่างลงในตาราง product

CREATE TABLE `product` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `product` (`id`, `name`) VALUES
(1,	'Computer'),
(2,	'Nodebook'),
(3,	'Mobile Phone');

 

2. สร้างไฟล์ db.php ทำหน้าที่เชื่อมต่อฐานข้อมูล MySQL ด้วยคำสั่ง mysqli

<?php
    $server = "localhost";
    $username = "myuser";
    $password = "mypassword";
    $dbname = "mydatabase";

    $conn = new mysqli($server, $username, $password, $dbname);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
?>

จากตัวอย่างเชื่อมต่อฐานข้อมูล MySQL ด้วย

- server คือ localhost

- username คือ myuser

- password คือ mypassword

- dbname คือ mydatabase

* สามารถเปลี่ยนแปลงได้ตามการตั้งค่าตอนติดตั้ง MySQL

 

3. สร้าง API ด้วย PHP ทำหน้าที่แสดงข้อมูล (Read) ชื่อไฟล์ read.php

<?php
    header("Content-Type: application/json; charset=UTF-8");

    require( "db.php" );

    $sql = "SELECT * FROM product";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        $rows = array();
        while($row = $result->fetch_assoc()) {
            $rows[] = $row;
        }
        echo json_encode($rows);
    } else {
        echo "0 results";
    }
    
    $conn->close();
?>

ทดสอบโดยการเปิด cmd และใช้คำสั่ง curl รันคำสั่งด้านล่าง จากตัวอย่างเป็นการสื่อสารแบบ GET

curl http://localhost:8000/read.php

ผลลัพธ์

[
	{"id":"1","name":"x"},
	{"id":"2","name":"Nodebook"},
	{"id":"3","name":"Mobile Phone"}
]

จากตัวอย่าง API ทำหน้าที่ดึงข้อมูลทั้งหมดจากตาราง product และคืนค่ากลับมาให้ผู้เรียกใช้ API แบบ JSON

 

4. สร้าง API ด้วย PHP ทำหน้าที่เพิ่มข้อมูล (Create) ชื่อไฟล์ create.php

<?php
    header("Content-Type: application/json; charset=UTF-8");

    if($_SERVER['REQUEST_METHOD'] === 'POST') {
        require( "db.php" );

        $name = $_POST['name'];

        $stmt = $conn->prepare("INSERT INTO product (name) VALUES (?)");
        $stmt->bind_param("s", $name);
        if ($stmt->execute() === TRUE) {
            echo "New record created successfully";
        } else {
            echo "Error: " . $stmt . "<br>" . $conn->error;
        }
    }
    
    $conn->close();
?>

ทดสอบ API นี้ด้วยคำสั่ง curl มีการส่งค่า name เพื่อนำไปเพิ่มข้อมูลลงในตาราง product และระบุว่าเป็นการสื่อสารแบบ POST ตามคำสั่งด้านล่าง

curl -d "name=pencil" -X POST http://localhost:8000/create.php

ผลลัพธ์

New record created successfully

 

5. สร้าง API ด้วย PHP ทำหน้าที่แก้ไขข้อมูล (Update) ชื่อไฟล์ update.php

<?php
    header("Content-Type: application/json; charset=UTF-8");

    if($_SERVER['REQUEST_METHOD'] === 'POST') {
        require( "db.php" );

        $id = $_POST['id'];
        $name = $_POST['name'];

        $stmt = $conn->prepare("UPDATE product SET name = ? WHERE id = ?");
        $stmt->bind_param("si", $name, $id);
        if ($stmt->execute() === TRUE) {
            echo "Update record successfully";
        } else {
            echo "Error: " . $stmt . "<br>" . $conn->error;
        }
    }
    
    $conn->close();
?>

ทดสอบ API นี้ด้วยคำสั่ง curl มีการส่งค่า name และ id โดย name คือข้อมูลที่ใหม่ และ id คือรหัสแถวที่ต้องการแก้ไขในตาราง product และระบุว่าเป็นการสื่อสารแบบ POST ตามคำสั่งด้านล่าง

curl -d "name=pen&id=4" -X POST http://localhost:8000/update.php

ผลลัพธ์

Update record successfully

 

6. สร้าง API ด้วย PHP ทำหน้าที่ลบข้อมูล (Delete) ชื่อไฟล์ delete.php

<?php
    header("Content-Type: application/json; charset=UTF-8");

    if($_SERVER['REQUEST_METHOD'] === 'POST') {
        require( "db.php" );

        $id = $_POST['id'];

        $stmt = $conn->prepare("DELETE FROM product WHERE id = ?");
        $stmt->bind_param("i", $id);
        if ($stmt->execute() === TRUE) {
            echo "Delete record successfully";
        } else {
            echo "Error: " . $stmt . "<br>" . $conn->error;
        }
    }
    
    $conn->close();
?>

ทดสอบ API นี้ด้วยคำสั่ง curl มีการส่งค่า id เพื่อบอกให้ API ทราบว่าจะลบข้อมูลแถวไหนในตาราง product และระบุว่าเป็นการสื่อสารแบบ POST ตามคำสั่งด้านล่าง

curl -d "id=8" -X POST http://localhost:8000/delete.php

ผลลัพธ์

Delete record successfully

 

สรุป บทความนี้เราได้เรียนรู้วิธีการสร้าง API ด้วย PHP และ MySQL โดยเริ่มจากเตรียมข้อมูลใน MySQL จากนั้นเขียนโค้ด PHP เพื่อเชื่อมต่อฐานข้อมูล และเขียน API ทำหน้าที่ CRUD ทั้งหมด 4 ไฟล์ พร้อมกับเรียนรู้วิธีการใช้คำสั่ง curl เพื่อทดสอบ API ทั้งแบบ GET และแบบ POST ที่มีการส่งค่า parameter ให้กับ API เพื่อนำไปทำงาน

แก้ไข 5 เดือนที่แล้ว
ชอบ
ลิ้งก์
แชร์
Devdit มีช่อง YouTube แล้ว
เราสร้างวิดีโอเกี่ยวกับเทคโนโลยี ทำตามง่ายๆ