ป้ายกำกับ: technical-seo

เชื่อมต่อพีเฮชพีกับ sql server (sqlsrv )เชื่อมต่อพีเฮชพีกับ sql server (sqlsrv )

ในโลกของการพัฒนาเว็บแอปพลิเคชันขนาดใหญ่ (Enterprise Applications) การเลือกใช้ระบบฐานข้อมูลที่เหมาะสมเป็นสิ่งสำคัญอย่างยิ่ง แม้ว่าฐานข้อมูลอย่าง MySQL จะได้รับความนิยมสูง แต่สำหรับองค์กรที่ใช้โครงสร้างพื้นฐานของ Microsoft (Microsoft Ecosystem) หรือต้องการความเสถียรระดับสูง Microsoft SQL Server คือตัวเลือกที่เชื่อถือได้ที่สุด

บทความนี้จะนำคุณไปสู่การเชื่อมต่อ PHP กับ SQL Server อย่างเป็นระบบ โดยใช้ Driver อย่าง sqlsrv ซึ่งเป็นตัวแทนที่ทันสมัยและถูกต้องกว่าการใช้ mssql ที่ถูกยกเลิกการใช้งานไปแล้ว ในฐานะ Senior Architect เราจะเน้นการติดตั้งที่ถูกต้องตามหลักการและวิธีการเขียนโค้ดที่ปลอดภัยที่สุด

🛠️ ขั้นตอนที่ 1: การเตรียมความพร้อมของ PHP และ Driver

ก่อนเริ่มการเขียนโค้ด คุณต้องมั่นใจว่าสภาพแวดล้อม PHP ของคุณพร้อมใช้งาน Driver ที่ถูกต้อง

  1. ตรวจสอบ PHP Version: รันคำสั่ง php -v เพื่อทราบเวอร์ชัน PHP ที่ใช้งานอยู่
  2. ดาวน์โหลด Driver: เข้าไปที่เว็บไซต์ทางการของ Microsoft และดาวน์โหลด Microsoft Drivers for PHP for SQL Server โดยต้องเลือกเวอร์ชันที่ตรงกับ PHP ของคุณอย่างเคร่งครัด
  3. การติดตั้ง Driver: แตกไฟล์ Driver ที่ดาวน์โหลดมา จากนั้นคัดลอกไฟล์ .dll ที่เกี่ยวข้อง (เช่น ไฟล์ที่ระบุ _ts สำหรับ Thread Safe) ไปวางไว้ในโฟลเดอร์ ext ของ PHP (เช่น C: extbackslash xampp extbackslash php extbackslash ext)

⚙️ ขั้นตอนที่ 2: การเปิดใช้งาน Extension ใน php.ini

การคัดลอกไฟล์เพียงอย่างเดียวไม่เพียงพอ คุณต้องแจ้งให้ PHP ทราบว่ามี Driver ตัวใหม่ติดตั้งอยู่ โดยการแก้ไขไฟล์ php.ini (ที่อยู่ในโฟลเดอร์ PHP ของคุณ) ให้เพิ่มบรรทัดสำหรับ extension= ของ Driver ตัวใหม่เข้าไป และอย่าลืมรีสตาร์ท Web Server (เช่น Apache) เสมอ

🚀 ขั้นตอนที่ 3: การเขียนโค้ดเชื่อมต่อ (Best Practice)

เราควรใช้ Prepared Statements เพื่อป้องกันการโจมตีแบบ SQL Injection เสมอ นี่คือตัวอย่างการเชื่อมต่อและการเรียกใช้ข้อมูลที่ปลอดภัย:

PHP

<?php
// 1. กำหนดค่าการเชื่อมต่อ
$serverName = "your_server_address";
$connectionOptions = array(
    'Database' => 'your_database_name',
    'Uid' => 'your_username',
    'PWD' => 'your_password'
);

// 2. สร้างการเชื่อมต่อ
$conn = sqlsrv_connect($serverName, $connectionOptions);

if ($conn === false) {
    die("การเชื่อมต่อล้มเหลว: " . print_r(sqlsrv_errors(), true));
}

echo "เชื่อมต่อ SQL Server สำเร็จ!";

// 3. เตรียมคำสั่ง SQL (ใช้ Prepared Statement)
$sql = "SELECT product_id, product_name, price FROM products WHERE category_name = ? AND stock_quantity > ?;";

// 4. รันคำสั่งและส่งค่าตัวแปร
$params = array('Electronics', 10);
$stmt = sqlsrv_prepare($conn, $sql, $params);

if ($stmt === false) {
    die("เตรียมคำสั่ง SQL ล้มเหลว: " . print_r(sqlsrv_errors(), true));
}

// 5. ดึงข้อมูลผลลัพธ์
$result = sqlsrv_execute($stmt);

if ($result) {
    echo "<br>รายการสินค้าที่พร้อมจำหน่าย: <br>";
    while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
        // ตัวอย่างการแสดงผลข้อมูลที่ได้จาก PostgreSQL-like structure
        echo "ID: " . $row['product_id'] . " | ชื่อ: " . $row['product_name'] . " | ราคา: " . $row['price'] . "<br>";
    }
}

// 6. ปิดการเชื่อมต่อ
sqlsrv_close($conn);
?>

✅ บทสรุปและข้อแนะนำจาก Senior Architect

การเชื่อมต่อ PHP กับ SQL Server ด้วย sqlsrv นั้นมีขั้นตอนที่ชัดเจนและเป็นมาตรฐาน การใช้ Prepared Statements ไม่เพียงแต่ช่วยให้โค้ดของคุณมีความปลอดภัยสูงสุด แต่ยังช่วยเพิ่มประสิทธิภาพในการรันคำสั่ง SQL ที่มีการส่งค่าตัวแปรซ้ำๆ ได้อย่างมาก หากคุณกำลังพัฒนาแอปพลิเคชันระดับองค์กร โปรดให้ความสำคัญกับการจัดการ Error Handling และการปิดการเชื่อมต่อ (sqlsrv_close()) เสมอ เพื่อให้ทรัพยากรของฐานข้อมูลถูกปล่อยคืนอย่างสมบูรณ์ นี่คือรากฐานที่มั่นคงสำหรับระบบ Back-end ที่มีประสิทธิภาพสูง