การติดตั้ง PHP connect to SQL Server

ลองติดตั้ง extension ของ PHP สำหรับเชื่อมต่อกับ Microsoft SQL Server เหตุผลที่ต้องทำเช่นนี้เพราะ web service ที่ใช้เป็นระบบหลักมัน run อยู่บน Apache ที่ติดตั้งอยู่บน WAMP หรือ XAMPP อีกทีนึง (เครื่องแม่ข่ายเป็น Windows Server น่ะ มัน run service หลายอย่าง)  มาดูวิธีง่ายๆ แบบที่ไม่มีปัญหาใดๆเลย ดังนี้

1. ดูว่าใช้ PHP เวอร์ชั่นไหน

ในที่นี้ใช้ WAMP วิธีการดูว่าเราใช้ version ไหนก็เพียงแค่เข้า http://localhost เท่านั้นก็จะพบหน้าจอแบบด้านล่างนี้

2. ดาวน์โหลด Microsoft Drivers for PHP for SQL Server

ซึ่งตรงนี้แหละที่เราต้องเลือกให้ตรงกับเวอร์ชั่นที่เราใช้งาน ซึ่งมีรายละเอียดบอกไว้ใน System Requirements ดังนี้

Requires PHP 7 or 5.x. For information about how to download and install the latest stable binaries, visit http://windows.php.net for more detail.

  • Version support for PHP is as follows
  • Version 4.0 supports PHP 7.0+ on Windows and Linux
  • Version 3.2 supports PHP 5.6, 5.5, and 5.4 on Windows
  • Version 3.1 supports PHP 5.5 and 5.4 on Windows
  • Version 3.0 supports PHP 5.4 on Windows

Download -> https://www.microsoft.com/en-us/download/details.aspx?id=20098

3. ติดตั้งไปยังโฟลเดอร์ ext ที่อยู่ใน PHP

ในตัวอย่างนี้ผมติดตั้งไว้ใน drive F:\wamp\bin\php5.5.12\ext

มาดูไฟล์ที่แตกออกมา เยอะเลย

4. แก้ไขไฟล์ php.ini

อันนี้คงไม่บอกนะว่าต้องเข้าไปตรงไหน น่าจะหากันถูก โดยใช้ text editor ทั่วไป อย่าง notepad ก็ใช้ได้

เพิ่มบรรทัดนี้ลงไป ต่อท้ายส่วนที่เป็น windows extension ก็ได้ เวลาค้นหาครั้งต่อไปจะได้ง่าย

[PHP_SQLSRV]
extension=php_sqlsrv_55_ts.dll
extension=php_pdo_sqlsrv_55_ts.dll

5. ดาวน์โหลด MS SQL Server 2012 Native Client ODBC driver

ตัวนี้เป็น driver ฝั่งที่เราจะเชื่อมกับ SQL Server อีกตัวหนึ่งที่ลงเผื่อไว้ก็ไม่เสียหาย เมื่อติดตั้งเสร็จแล้วให้ reboot เครื่องซักรอบ ก่อนจะมาเริ่มการทำสอบ code php กัน

Download -> http://go.microsoft.com/fwlink/?LinkID=239648&clcid=0x409

6. ทดสอบ connect Microsoft SQL Server ด้วย PHP

ในเบื้องต้นเราจะทดสอบเพื่อให้แน่ใจว่า extension และ driver ที่ติดตั้งไปนั้น มันใช้งานได้หรือไม่ โดยใช้ function sqlsrv_connect ด้วย code ง่ายๆ ดังนี้

<?php
$serverName = "localhost"; //serverName\instanceName ถ้าฐานข้อมูลอยู่ในเครื่องเราใช้ localhost 
$connectionInfo = array(
    "Database" => "ชื่อของฐานข้อมูล",
    "UID" => "ชื่อผู้ใช้",
    "PWD" => "รหัสผ่าน"
);

$conn = sqlsrv_connect( $serverName, $connectionInfo);

if ( $conn ) {
    echo "Connection established.<br />";
} else {
    echo "Connection could not be established.<br />";
    die( print_r( sqlsrv_errors(), true));
}
?>

ทดสอบ run ถ้าขึ้นว่า Connection established. ก็เป็นอันสำเร็จ ไปเขียน code อื่นๆ ต่อได้ แต่ถ้าไม่ ก็ดู error ที่มันแสดงมาให้ว่ามีปัญหาที่อะไร แล้วค่อยแก้ไขไปทีละส่วน ถ้า sqlsrv ใช้งานไม่ได้ ให้ทดสอบด้วย odbc เพราะเราติดตั้ง driver ไว้แล้วเหมือนกัน

ทิ้งท้ายด้วยลิงค์สำหรับแก้ปัญหาต่างๆ ที่อาจจะเกิดขึ้นได้