เขียน API ด้วย PHP
  03 เมษายน 2562       14660

การเขียน api เพื่อดึงข้อมูลจากฐานข้อมูลมาแสดงผลในรูปแบบของ json อันดับแรกต้องเตรียมฐานข้อมูลก่อน

การเตรียมข้อมูล
1.สร้างฐานข้อมูลขึ้นมาชื่อ hc_smart_school
2.ภายในฐานข้อมูลให้สร้างตารางขึ้นมา 1 ตาราง ตั้งชื่อตารางว่า student ประกอบด้วยฟิลด์ต่างๆ ดังนี้

3.ทดลองใส่ข้อมูล โดยไปที่ insert


4.จะได้หน้าจอสำหรับกรอกข้อมูลดังรูป


5.กรอกข้อมูลต่างๆ จากนั้นกดปุ่ม “Go”


6.จะได้หน้าจอดังนี้


7.ไปที่เมนู Browseเพื่อดูข้อมูล จะได้ข้อมูลดังรูป



การเขียนโปรแกรม

ก่อนที่จะเขียนโปรแกรมเพื่อแสดงผลข้อมูลในรูปแบบของ json ให้เตรียมโครงสร้างของโค้ดดังนี้
1. ภายใต้โฟลเดอร์ของตัวจำลอง server ให้สร้างโฟลเดอร์ไว้ดังนี้

  • โฟเดอร์ชื่อ config ไว้สำหรับเก็บไฟล์ config เพื่อตั้งค่าการเชื่อมต่อกับฐานข้อมูล และประมวลผลคำสั่ง sql
  • โฟลเดอร์ process ไว้สำหรับเก็บไฟล์ ที่แสดงผลข้อมูลออกมาในรูปแบบของ json

เมื่อเตรียมโครงสร้างของโปรเจ็กเรียบร้อยแล้ว ก็มาลงมือเขียนโปรแกรมกันเลย
1. สร้างไฟล์ config สำหรับเก็บค่าการเชื่อมต่อกับฐานข้อมูลสามารถทำได้ดังนี้
1.1 เปิดโปรแกรม notepad++ จากนั้นไปที่เมนู File -> new จะได้ไฟล์ใหม่ขึ้นมา
1.2 พิมพ์โค้ดดังนี้

<?php

class DatabaseConnection {

private $host = "localhost";

private $db_name = "hc_smart_school"; //ชื่อฐานข้อมูล

private $username = "root"; //username ของ database

private $password = "root1234"; // รหัสผ่านของ database

public $conn;

public function getConnection(){

$this->conn = null;

try {

$this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);

$this->conn->exec("set names utf8");

}catch(PDOException $exception){

echo "Connection error: " . $exception->getMessage();

}

return $this->conn;

}

}

?>

1.3 บันทึกไฟล์ โดยไปที่เมนู File -> save หรือจะใช้วิธี ctrl+s ก็ได้ จากนั้นตั้งชื่อไฟล์ DbConnect.php และกดปุ่ม save


2. สร้างไฟล์สำหรับประมวลผลทำสั่ง sql
2.1 ไปที่เมนู File -> new
2.2 พิมพ์คำสั่งดังต่อไปนี้

<?php

class HCExec {

private $conn;

public function __construct($db){

$this->conn = $db;

}

public function dataTransection( $query ){

try {

$stmt = $this->conn->prepare( $query );

if($stmt->execute()){

return 1;

} else {

return 0;

}

} catch (PDOException $e) {

return false;

}

}

public function read( $query ){

try {

$stmt = $this->conn->prepare( $query );

if($stmt->execute()){

return $stmt;

}

} catch (PDOException $e) {

return false;

}

}

}

?>

2.3 บันทึกไฟล์ไว้ภายในโฟลเดอร์ exec โดยไปที่เมนู File -> save จากนั้นเลือกโฟลเดอร์ exec ตั้งชื่อไฟล์ HCExec.php จากนั้นกดปุ่ม “save”

3. สร้างไฟล์สำหรับแสดงผลข้อมูลในรูปแบบ json
3.1 สร้างไฟล์ใหม่ โดยไปที่เมนู File -> new
3.2 พิมพ์โค้ดดังนี้

<?php

date_default_timezone_set("Asia/Bangkok");

header("Access-Control-Allow-Origin: *");

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

header("Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS");

header("Access-Control-Allow-Max-Age: 3600");

header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

include "../config/DbConnect.php";

include "../config/HCExec.php";

$db = new DatabaseConnection();

$strConn = $db->getConnection();

$strExe = new HCExec($strConn);

$sql = " SELECT * FROM student ";

$stmt = $strExe->read($sql);

$rowCount = $stmt->rowCount();

if ($rowCount > 0) {

$data_arr['rs'] = array();

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

extract($row);

array_push($data_arr["rs"], $row);

}

echo json_encode($data_arr);

} else {

echo json_encode(array("message" => "No data found","row"=> $rowCount));

}

?>

3.3 บันทึกไฟล์ไว้ภายในโฟลเดอร์ student โดยไปที่เมนู File -> save จากนั้นเลือกโฟลเดอร์ student ตั้งชื่อไฟล์ student.php จากนั้นกดปุ่ม “save
4. ทดสอบรันโปรแกรมจะได้ข้อมูลที่แสดงออกมาในรูปแบบของ Json ดังรูป

ดาวน์โหลด source code :

-