การใช้งาน SQLite กับภาษา PHP เบื้องต้น
ในบทก่อนหน้านี้ เราได้เรียนรู้วิธีการ Query ข้อมูลด้วย WHERE Clause ใน SQLite เพื่อกรองข้อมูลให้ตรงตามเงื่อนไขที่ต้องการ ในบทนี้ เราจะมาดูวิธีการใช้งาน SQLite ร่วมกับภาษา PHP เพื่อสร้างแอปพลิเคชันที่สามารถจัดการข้อมูลในฐานข้อมูล SQLite ของเราได้ การเชื่อมต่อฐานข้อมูลกับภาษาโปรแกรมมิ่งอย่าง PHP จะเปิดโลกแห่งความเป็นไปได้ในการสร้างแอปพลิเคชันที่ซับซ้อนและมีประสิทธิภาพมากยิ่งขึ้น
การติดตั้ง SQLite extension ใน PHP
ก่อนที่เราจะสามารถใช้งาน SQLite กับ PHP ได้ เราจำเป็นต้องตรวจสอบให้แน่ใจว่า SQLite extension ได้ถูกติดตั้งและเปิดใช้งานใน PHP ของเราแล้ว โดยปกติแล้ว SQLite extension จะถูกติดตั้งมาพร้อมกับ PHP ในหลายๆ distributions แต่ถ้าหากยังไม่มี เราจะต้องทำการติดตั้งด้วยตัวเอง
วิธีการตรวจสอบว่า SQLite extension ถูกติดตั้งแล้วหรือไม่ สามารถทำได้โดยการสร้างไฟล์ PHP ที่มีโค้ดต่อไปนี้:
<?php
phpinfo();
?>
จากนั้นให้เปิดไฟล์นี้ผ่าน Web browser และค้นหาคำว่า "SQLite3" ในหน้าผลลัพธ์ ถ้าพบข้อมูลเกี่ยวกับ SQLite3 แสดงว่า extension ได้ถูกติดตั้งและเปิดใช้งานแล้ว
หากไม่พบข้อมูลเกี่ยวกับ SQLite3 เราจะต้องทำการติดตั้ง extension ด้วยวิธีการที่แตกต่างกันไปขึ้นอยู่กับระบบปฏิบัติการและวิธีการติดตั้ง PHP ของคุณ ตัวอย่างเช่น:
- บน Debian/Ubuntu:
sudo apt-get install php-sqlite3 - บน CentOS/RHEL:
sudo yum install php-sqlite
หลังจากติดตั้งเสร็จแล้ว อย่าลืม restart web server ของคุณ (เช่น Apache หรือ Nginx) เพื่อให้ PHP โหลด extension ใหม่
เหตุผลเชิงออกแบบ: การมี SQLite extension ที่ PHP ทำให้เราสามารถใช้ฟังก์ชันต่างๆ ที่ PHP เตรียมไว้ให้เพื่อเชื่อมต่อและจัดการฐานข้อมูล SQLite ได้อย่างสะดวกและง่ายดาย การที่ extension นี้ถูกออกแบบมาให้ทำงานร่วมกับ PHP อย่างใกล้ชิด ทำให้การพัฒนาแอปพลิเคชันที่ใช้ SQLite เป็นเรื่องง่ายและรวดเร็ว
การเชื่อมต่อกับฐานข้อมูล SQLite ด้วย PHP
เมื่อเรามั่นใจว่า SQLite extension ได้ถูกติดตั้งและเปิดใช้งานแล้ว ขั้นตอนต่อไปคือการเชื่อมต่อกับฐานข้อมูล SQLite ของเราด้วย PHP เราสามารถทำได้โดยใช้ class SQLite3 ที่ PHP เตรียมไว้ให้
<?php
$db = new SQLite3('mydatabase.db');
if (!$db) {
die("Connection failed: " . $db->lastErrorMsg());
}
echo "Connected to database successfully!";
$db->close();
?>
คำอธิบาย:
$db = new SQLite3('mydatabase.db');: บรรทัดนี้สร้าง instance ของ classSQLite3และพยายามเชื่อมต่อกับฐานข้อมูลชื่อmydatabase.dbถ้าไฟล์นี้ไม่มีอยู่ PHP จะสร้างไฟล์ฐานข้อมูลให้ใหม่if (!$db) { ... }: ตรวจสอบว่าการเชื่อมต่อสำเร็จหรือไม่ ถ้าไม่สำเร็จ แสดงข้อผิดพลาดและหยุดการทำงานecho "Connected to database successfully!";: แสดงข้อความเมื่อการเชื่อมต่อสำเร็จ$db->close();: ปิดการเชื่อมต่อกับฐานข้อมูลเสมอเมื่อใช้งานเสร็จแล้ว เพื่อ release resources
แนวปฏิบัติที่ดี: ควรตรวจสอบเสมอว่าการเชื่อมต่อสำเร็จหรือไม่ และควรปิดการเชื่อมต่อเมื่อใช้งานเสร็จแล้ว เพื่อป้องกันปัญหา resource leaks และความปลอดภัย
การ Query ข้อมูลด้วย PHP
เมื่อเราเชื่อมต่อกับฐานข้อมูลได้แล้ว ขั้นตอนต่อไปคือการ Query ข้อมูลจากฐานข้อมูลของเรา เราสามารถทำได้โดยใช้ method query() ของ class SQLite3
สมมติว่าเรามีตารางชื่อ users ที่มี column id, name, และ email เราสามารถ Query ข้อมูลทั้งหมดจากตารางนี้ได้ดังนี้:
<?php
$db = new SQLite3('mydatabase.db');
$results = $db->query('SELECT * FROM users');
while ($row = $results->fetchArray()) {
echo "ID: " . $row['id'] . "<br>";
echo "Name: " . $row['name'] . "<br>";
echo "Email: " . $row['email'] . "<br>";
echo "<br>";
}
$db->close();
?>
คำอธิบาย:
$results = $db->query('SELECT * FROM users');: ส่ง SQL query ไปยังฐานข้อมูลwhile ($row = $results->fetchArray()) { ... }: วนลูปผ่านแต่ละ row ที่ได้จาก query$row['id'], $row['name'], $row['email']: เข้าถึงข้อมูลในแต่ละ column ของ row
เรายังสามารถใช้ WHERE Clause ที่เราได้เรียนรู้ในบทก่อนหน้านี้เพื่อกรองข้อมูลที่เราต้องการได้ ตัวอย่างเช่น:
<?php
$db = new SQLite3('mydatabase.db');
$results = $db->query("SELECT * FROM users WHERE name = 'John Doe'");
while ($row = $results->fetchArray()) {
echo "ID: " . $row['id'] . "<br>";
echo "Name: " . $row['name'] . "<br>";
echo "Email: " . $row['email'] . "<br>";
echo "<br>";
}
$db->close();
?>
ข้อควรระวัง: การใส่ค่าโดยตรงลงใน SQL query (เช่น "SELECT * FROM users WHERE name = '$name'") เป็นวิธีที่ไม่ปลอดภัยและอาจนำไปสู่ SQL injection attacks เราจะพูดถึงวิธีการป้องกัน SQL injection ในบทถัดไป
การเพิ่ม แก้ไข ลบ ข้อมูลด้วย PHP
นอกจาก Query ข้อมูลแล้ว เรายังสามารถเพิ่ม แก้ไข และลบข้อมูลในฐานข้อมูล SQLite ของเราได้ด้วย PHP
การเพิ่มข้อมูล:
<?php
$db = new SQLite3('mydatabase.db');
$db->exec("INSERT INTO users (name, email) VALUES ('Jane Doe', 'jane.doe@example.com')");
echo "Data inserted successfully!";
$db->close();
?>
การแก้ไขข้อมูล:
<?php
$db = new SQLite3('mydatabase.db');
$db->exec("UPDATE users SET email = 'new.email@example.com' WHERE name = 'Jane Doe'");
echo "Data updated successfully!";
$db->close();
?>
การลบข้อมูล:
<?php
$db = new SQLite3('mydatabase.db');
$db->exec("DELETE FROM users WHERE name = 'Jane Doe'");
echo "Data deleted successfully!";
$db->close();
?>
คำอธิบาย:
$db->exec(): ใช้สำหรับ execute SQL statements ที่ไม่ได้ return ผลลัพธ์ (เช่น INSERT, UPDATE, DELETE)
เหตุผลเชิงออกแบบ: การใช้ exec() สำหรับ SQL statements ที่ไม่ได้ return ผลลัพธ์ ทำให้โค้ดอ่านง่ายและเข้าใจง่ายกว่าการใช้ query() ในกรณีที่ไม่จำเป็น
สรุป: ในบทนี้ เราได้เรียนรู้วิธีการเชื่อมต่อและใช้งาน SQLite กับภาษา PHP เบื้องต้น เราได้เรียนรู้วิธีการติดตั้ง SQLite extension ใน PHP, การเชื่อมต่อกับฐานข้อมูล SQLite, การ Query ข้อมูล, และการเพิ่ม แก้ไข ลบ ข้อมูล ในบทถัดไป เราจะมาเรียนรู้วิธีการใช้ Prepared Statements เพื่อป้องกัน SQL injection ซึ่งเป็นสิ่งสำคัญอย่างยิ่งในการพัฒนาแอปพลิเคชันที่ปลอดภัย