PHP/ IIS & SQL Server (PDO,sqlsrv) - Configuration & Settings |
PHP/ IIS & SQL Server (PDO,sqlsrv) - Configuration & Settings สำหรับ PDO เป็นทางเลือกหนึ่งในการเขียนโปรแกรม PHP สำหรับการเชื่อมต่อกับ Database ของ SQL Server เหตุผลหลักเลยที่จะใช้ PDO คือ มันรองรับการใช้งาน Database ได้หลายค่าย นั่นหมายถึงว่า เมื่อเราใช้ function ของ PDO ในอนาคตเราสามารถปรับเปลี่ยน Database ก็สามารถทำได้ง่าย ๆ ด้วยการเปลี่ยน Driver เท่านั้น โดยที่ไม่ต้องไปตามแก้ไขพวก function ต่าง ๆ เที่เราเขียนไว้
$serverName = "localhost";
$userName = 'sa';
$userPassword = '';
$dbName = "mydatabase";
$conn = new PDO("sqlsrv:server=$serverName ; Database = $dbName", $userName, $userPassword);
จะเห็นว่า PDO มีการเรียกใช้ Driver ของ sqlsrv (สำหรับ SQL Server) แต่ถ้าในอนาคตมีการเปลี่ยน Database ไปใช้ตัวอื่น เราก็สามารถที่จะเปลี่ยนแต่ Driver ไปใช้ตัวที่ออกแบบมาสำหรับ Database นั้น ๆ เช่น Oracle , MySQL เป็นต้น
สำหรับในบทความนี้จะเป็นการ Configuration ให้ IIS สามารถที่จะรัน PHP เพื่อติดต่อกับ SQL Server Database ด้วย function ของ PDO ด้วยการเรียกใช้งาน extension ของ php_pdo_sqlsrv.dll หรือถ้าเป็น Version ใหม่ ๆ อาจจะต้องหา dll ที่ใช้กับ Version นั้น ๆ ด้วย
สำหรับ IIS ที่จะแนะนำให้ใช้คือ IIS 7 หรือตั้งแต่ Windows 7 เป็นต้นไป
เริ่มต้นด้วยการ Download และติดตั้ง PHP for IIS สามารถดาวน์โหลดได้จาก (http://php.iis.net/)
ติดตั้ง PHP บน IIS และการ Setup ให้ปรับแต่ง PHP สามารถทำงาน Run บน IIS Web Serverได้
หลังจากที่ติดตั้งเรียบร้อยแล้ว เราจะเห็น Icon ของ PHP Manager อยู่บนหน้าจอของ IIS
หน้าจอนี้บอกอะไรหลายอย่างเช่น Path ของ php.ini รวมทั้งการ เพิ่ม/ลบ ปิด/เปิดรายการ extension ต่าง ๆ
การ Configuration ให้ PHP รู้จักกับ function ของ PDO (sqlsrv)
connect.php
<html>
<head>
<title>ThaiCreate.Com PHP & SQL Server (PDO)</title>
</head>
<body>
<?php
ini_set('display_errors', 1);
error_reporting(~0);
$serverName = "localhost";
$userName = 'sa';
$userPassword = '';
$dbName = "mydatabase";
$conn = new PDO("sqlsrv:server=$serverName ; Database = $dbName", $userName, $userPassword);
if($conn)
{
echo "Database Connected.";
}
else
{
echo "Database Connect Failed.";
}
$conn = null;
?>
</body>
</html>
ก่อนอื่นให้เขียน function สำหรับการเชื่อมต่อกับ SQL Server Database ด้วย function ของ PDO()
กรณีที่ Error หรือ PHP ไม่รู้จักกับ function ของ PDO
Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in C:\inetpub\wwwroot\myphp\connect.php:16 Stack trace: #0 C:\inetpub\wwwroot\myphp\connect.php(16): PDO->__construct('sqlsrv:server=l...', 'sa', '') #1 {main} thrown in C:\inetpub\wwwroot\myphp\connect.php on line 16
ให้กลับมาที่ IIS เพื่อเปิด Extension ด้วยการคลิกที่ Enable or disable extension
จะเห็นว่ารายการ Extension ที่ถูก Enable และ Disable ไว้ เราสามารถเปิดได้จากเมนูนี้
สำหรับ function ของ PDO ให้ใช้ Library ชื่อว่า php_pdo_sqlsrv.dll
php_pdo_sqlsrv.dll
กรณีที่เป็น Version อื่น ๆ เช่น PHP 5.4.x อาจจะต้องหา php_pdo_sqlsrv.dll สำหรับ Version นั้น ๆ
กรณีที่ต้องการ Extension ก็สามารถ Add ได้ด้วยการคลิกที่ Add an extension เลือก Add ไฟล์ php_pdo_sqlsrv.dll
การตรวจสอบ Error Log ของ PHP
Error
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files\PHP\v5.3\ext\php_pdo_sqlsrv.dll' - The specified module could not be found.
in Unknown on line 0
ถ้ายังมี Error นี้ให้ตรวจสอบ Version ของ php_pdo_sqlsrv.dll ว่ารองรับบน PHP Version ที่กำลังใช้งานอยู่หรือไม่
ถ้าใช้งานสมบูรณ์เราก็จะสามารถเขียน PHP กับ SQL Server ด้วย function ของ PDO ได้แล้ว
เพิ่มเติม การปรับแต่งค่าใดๆ บน IIS ควร Restart ตัว Site หรือ IIS ซะ 1 รอบ
อ่านเพิ่มเติม : PHP กับ SQL Server (PDO)
|