ซึ่งเราสามารถทดสอบใช้งาน PDO ว่าเราสามารถใช้งานใน PDO ได้หรือไม่ ซึ่งจะมีตัวอย่างดังต่อไปนี้
โค้ด: เลือกทั้งหมด
<?php
$driver = PDO::getAvailableDrivers();
print_r($driver);
?>
ในการเชื่อต่อฐานข้อมูลใน Mysql นั้น เราจะใช้ตัวแปรหรือชุดอักษร 3 ตัวก็คือ DSN (Data Source Name), USername และ Password ตามตัวอย่างต่อไปนี้
โค้ด: เลือกทั้งหมด
<?php
$dsn = "mysql:dbname=test_db; host=127.0.0.1; charset=utf8";
$user = 'root';
$password = '';
try {
$pdo = new PDO($dsn, $user, $password);
echo $pdo->query('select version()')->fetchColumn()."<br/>";
echo $pdo->query('select database()')->fetchColumn()."<br/>";
}
catch (PDOEXception $e)
{
echo 'Connection failed: ' . $e->getMessage();
}
?>
ไฟล์ index.php
โค้ด: เลือกทั้งหมด
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHP PDO</title>
</head>
<style>
*{
padding: 0;
margin: 0;
box-sizing: border-box;
}
</style>
<body>
<?php
include_once 'class_content.php';
$database = new Database();
$db = $database->getConnection();
?>
</body>
</html>
จากนั้นไปที่ phpmyadmin ไปสร้าง table ใน test_db ชื่อ table คือ test_json จะมี 2 ฟิลด์ เก็บไอดีกับเก็บ json
โค้ด: เลือกทั้งหมด
-- phpMyAdmin SQL Dump
-- version 5.2.0
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Generation Time: Jan 18, 2023 at 04:17 PM
-- Server version: 10.4.24-MariaDB
-- PHP Version: 8.1.6
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `test_db`
--
-- --------------------------------------------------------
--
-- Table structure for table `test_json`
--
CREATE TABLE `test_json` (
`id` int(11) NOT NULL,
`data_json` text CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL CHECK (json_valid(`data_json`))
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Indexes for dumped tables
--
--
-- Indexes for table `test_json`
--
ALTER TABLE `test_json`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `test_json`
--
ALTER TABLE `test_json`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
ตัวอย่างไฟล์ index.php
เรามีข้อมูล json ชุดหนึ่ง
โค้ด: เลือกทั้งหมด
$data_json = '[{"id":1,"username":"red","email":"[email protected]"}]';
โค้ด: เลือกทั้งหมด
$data_json = array("id"=>1, "username" => "red", "email" => "[email protected]");
$data= json_encode($data_json , true);
$stmt = $db->prepare("INSERT INTO test_json (data_json) VALUES (?)");
$stmt->bindParam(1, $data);
if ($stmt->execute())
{
echo "เพิ่มข้อมูลแล้ว";
}
else{
echo "เพิ่มข็อมูลไม่ได้";
}
unset($db);
โค้ด: เลือกทั้งหมด
$sql = "select data_json from test_json";
$result = $db->query($sql);
while($row = $result->fetch(PDO::FETCH_ASSOC))
{
$data = json_decode($row['data_json']);
echo $data->id."<br/>";
echo $data->username."<br/>";
echo $data->email;
}
unset($db);
ก็นี้จะเป็นตัวอย่างการเก็บข้อมูลใน database และการแสดงข้อมูลจาก json มาโชว์ซึ่งเป็นตัวอีกแบบหนึ่งในการเก็บข้อมูลเราไม้ต้องมาเพิ่มฟิลด์ใช้เป็นจำนวนมาก ๆ บวกกลับเราจะมานำมาประยุกต์ใช้อย่างไรในการพัฒนาเว็บไซต์ของเรา เช่น ทำเว็บแอปพลิเคชัน แลกเปลี่ยนข้อมูลระหว่างเซิฟเวอร์และไคลเอนหรือเรียกว่า Web service เป็นต้น
อ้างอิง
https://www.mindphp.com/forums/viewtopic.php?t=22108
https://www.w3resource.com/php/pdo/php-pdo.php
https://oarkm.oas.psu.ac.th/blog/86