เริ่มต้นใช้งาน PDO: การติดตั้งและตั้งค่า
ในบทเรียนนี้ เราจะมาเริ่มต้นใช้งาน PDO (PHP Data Objects) ซึ่งเป็นส่วนขยาย (Extension) ที่สำคัญของ PHP ที่ช่วยให้เราสามารถเชื่อมต่อและทำงานกับฐานข้อมูลได้อย่างง่ายดายและปลอดภัย PDO เป็นเหมือนสะพานที่เชื่อมต่อ PHP ของเราเข้ากับฐานข้อมูลต่างๆ ไม่ว่าจะเป็น MySQL, PostgreSQL, SQLite และอื่นๆ อีกมากมาย
ในบทนี้ เราจะเรียนรู้วิธีการตรวจสอบว่า PDO ได้ถูกติดตั้งไว้ใน PHP ของเราแล้วหรือไม่ และวิธีการตั้งค่า Connection String หรือ DSN (Data Source Name) เพื่อใช้ในการเชื่อมต่อกับฐานข้อมูลของเรา
1. ตรวจสอบ PDO Extension
ก่อนที่เราจะเริ่มใช้งาน PDO ได้นั้น เราต้องตรวจสอบก่อนว่า PDO Extension ได้ถูกติดตั้งและเปิดใช้งานใน PHP ของเราแล้วหรือไม่ มีหลายวิธีในการตรวจสอบดังนี้:
1.1. ตรวจสอบผ่าน phpinfo()
วิธีที่ง่ายที่สุดคือการใช้ฟังก์ชัน phpinfo() ฟังก์ชันนี้จะแสดงข้อมูลการตั้งค่าทั้งหมดของ PHP ของเรา
- สร้างไฟล์ PHP ชื่อ
phpinfo.php - ใส่โค้ดต่อไปนี้ลงในไฟล์:
- เปิดไฟล์
phpinfo.phpผ่าน Browser ของคุณ (เช่นhttp://localhost/phpinfo.php) - ค้นหาคำว่า "PDO" ในหน้าเว็บ หากพบ แสดงว่า PDO ได้ถูกติดตั้งแล้ว
- หากพบส่วนของ PDO ที่ระบุ Driver ที่ต้องการ (เช่น PDO_MYSQL, PDO_PGSQL) แสดงว่า Driver นั้นๆ ก็ถูกติดตั้งและพร้อมใช้งานแล้วเช่นกัน
<?php
phpinfo();
?>
1.2. ตรวจสอบผ่าน Command Line
หากคุณถนัดการใช้งาน Command Line คุณสามารถใช้คำสั่งต่อไปนี้เพื่อตรวจสอบว่า PDO ได้ถูกติดตั้งหรือไม่:
php -m | grep pdo
หากคำสั่งนี้แสดงผลลัพธ์เป็น pdo แสดงว่า PDO ได้ถูกติดตั้งแล้ว
นอกจากนี้ คุณยังสามารถตรวจสอบ Driver ที่ติดตั้งได้ด้วยคำสั่ง:
php -i | grep "PDO drivers"
1.3. การติดตั้ง PDO Extension (กรณีที่ยังไม่ได้ติดตั้ง)
หากคุณตรวจสอบแล้วพบว่า PDO ยังไม่ได้ถูกติดตั้ง คุณจะต้องทำการติดตั้ง PDO Extension ก่อน วิธีการติดตั้งจะแตกต่างกันไปขึ้นอยู่กับระบบปฏิบัติการและวิธีการติดตั้ง PHP ของคุณ
- บน Linux (Debian/Ubuntu):
sudo apt-get update sudo apt-get install php-pdo php-mysql # สำหรับ MySQL # หรือ sudo apt-get install php-pdo php-pgsql # สำหรับ PostgreSQL - บน Linux (CentOS/RHEL):
sudo yum install php-pdo php-mysql # สำหรับ MySQL # หรือ sudo yum install php-pdo php-pgsql # สำหรับ PostgreSQL - บน Windows:
โดยทั่วไป PDO จะถูกติดตั้งพร้อมกับ PHP แต่หากไม่ได้ติดตั้ง คุณสามารถเปิดใช้งาน Extension ในไฟล์
php.iniโดย uncomment (ลบเครื่องหมาย;ที่ด้านหน้า) บรรทัดที่เกี่ยวข้องกับ PDO Extension เช่น:extension=pdo_mysqlหลังจากแก้ไขไฟล์
php.iniแล้ว ให้ทำการ Restart Web Server ของคุณ
สำคัญ: หลังจากติดตั้งหรือเปิดใช้งาน PDO Extension แล้ว อย่าลืม Restart Web Server ของคุณเพื่อให้การเปลี่ยนแปลงมีผล
2. การสร้าง DSN (Data Source Name)
DSN หรือ Data Source Name คือ String ที่ระบุข้อมูลที่จำเป็นในการเชื่อมต่อกับฐานข้อมูล เช่น ประเภทของฐานข้อมูล, Hostname, ชื่อฐานข้อมูล, และ Encoding
รูปแบบของ DSN จะแตกต่างกันไปขึ้นอยู่กับประเภทของฐานข้อมูลที่เราต้องการเชื่อมต่อ
2.1. DSN สำหรับ MySQL
รูปแบบ DSN สำหรับ MySQL คือ:
mysql:host=hostname;dbname=databasename;charset=utf8mb4
โดยที่:
mysql: ระบุประเภทของฐานข้อมูลเป็น MySQLhost=hostname: ระบุ Hostname ของฐานข้อมูล (เช่นlocalhostหรือ IP Address)dbname=databasename: ระบุชื่อของฐานข้อมูลcharset=utf8mb4: ระบุ Character Set ที่ใช้ในการเชื่อมต่อ (แนะนำให้ใช้utf8mb4เพื่อรองรับภาษาไทยและ Emoji)
ตัวอย่าง:
$dsn = 'mysql:host=localhost;dbname=mydatabase;charset=utf8mb4';
2.2. DSN สำหรับ PostgreSQL
รูปแบบ DSN สำหรับ PostgreSQL คือ:
pgsql:host=hostname;port=5432;dbname=databasename;user=username;password=password
โดยที่:
pgsql: ระบุประเภทของฐานข้อมูลเป็น PostgreSQLhost=hostname: ระบุ Hostname ของฐานข้อมูล (เช่นlocalhostหรือ IP Address)port=5432: ระบุ Port ของฐานข้อมูล (ค่า Default คือ 5432)dbname=databasename: ระบุชื่อของฐานข้อมูลuser=username: ระบุ Username ที่ใช้ในการเชื่อมต่อpassword=password: ระบุ Password ที่ใช้ในการเชื่อมต่อ
ตัวอย่าง:
$dsn = 'pgsql:host=localhost;port=5432;dbname=mydatabase;user=myuser;password=mypassword';
2.3. DSN สำหรับ SQLite
รูปแบบ DSN สำหรับ SQLite คือ:
sqlite:path/to/database.db
โดยที่:
sqlite: ระบุประเภทของฐานข้อมูลเป็น SQLitepath/to/database.db: ระบุ Path ไปยังไฟล์ฐานข้อมูล SQLite
ตัวอย่าง:
$dsn = 'sqlite:/path/to/mydatabase.db';
3. การตั้งค่า Username และ Password
เมื่อเรามี DSN แล้ว เราจะต้องระบุ Username และ Password ที่ใช้ในการเชื่อมต่อกับฐานข้อมูลด้วย โดยเฉพาะอย่างยิ่งสำหรับ MySQL และ PostgreSQL
เราจะใช้ Username และ Password เหล่านี้ในการสร้าง Instance ของ PDO Object ในบทถัดไป
ตัวอย่าง (MySQL):
$dsn = 'mysql:host=localhost;dbname=mydatabase;charset=utf8mb4';
$username = 'myuser';
$password = 'mypassword';
ข้อควรระวัง: อย่าเก็บ Username และ Password ไว้ใน Source Code โดยตรง โดยเฉพาะอย่างยิ่งหาก Source Code ของคุณถูกเก็บไว้ใน Public Repository เช่น GitHub ควรใช้ Environment Variables หรือ Configuration Files เพื่อเก็บข้อมูลเหล่านี้อย่างปลอดภัย
ในบทนี้ เราได้เรียนรู้วิธีการตรวจสอบ PDO Extension, การสร้าง DSN และการตั้งค่า Username และ Password ในบทถัดไป เราจะนำข้อมูลเหล่านี้มาใช้ในการสร้าง Instance ของ PDO Object และเชื่อมต่อกับฐานข้อมูลของเรา