PHP SQL Server Configuration & Connect to Database (PDO) |
PHP SQL Server Configuration & Connect to Database (PDO) สำหรับ PDO ชื่อเต็ม ๆ ว่า PHP Data Objects เป็น Class ที่ถูกออกแบบไว้สำหรับกจัดการกับ Database ได้ในรูปแบบหลากหลาย Database โดยในการเรียกใช้งาน Database ต่าง ๆ จะถุกเรียกใช้ผ่าน Driver ของ Database นั้น ๆ โดย PDO นี่ไม่ใช่ของใหม่ แต่มันมีมาตั้งแต่ PHP V 5.1 หรือเมื่อประมาณเกือบ ๆ 7-8 ปีที่แล้ว (ณ ตอนเขียนนี้ปี 2014) แต่เราอาจจะเห็นว่ามันได้ถูกใช้งานน้อยมาก เพราะคนมักจะเจาะจงไปยัง function ที่ถูกสร้างมาสำหรับ Database นั้น ๆ โดยเฉพาะ อาทิเช่น mysql (MySQL) , mssql (SQL Server) , oci (Oracle) แต่ในปัจจุบัน การเขียนโปรแกรมเมื่อมีขนาดใหญ่ขึ้น หรือรองรับ Migration Database การใช้ PDO จะเหมาะสมเมื่อต้องการเปลี่ยน Database เราจะไม่ต้องไปนั่งตามไล่แก้ Code ที่เขียนไว้ เพราะ PDO มันจะใช้ function ในรูปแบบเดียวกันทั้งหมด เพียงแต่แค่เปลี่ยนตรง Driver ของ Connection String เท่านั้น
ในบทความนี้เราจะถูกถึงการใช้ PDO กับ sqlsrv (SQL Server) ซึ่งจะใช้ Driver ที่ถูกออกแบบไว้ติดต่อกับ Database ของ SQL Server โดยเฉพาะ มันได้ถูกออกแบบให้ทำงานได้ดีกว่าเดิม ทำงานได้เร็ว และที่สำคัญ มันปลอดภัย รองรับแนวคิด OOP มากขึ้น การเขียนในรูปแบบของ Parameters Query และ Prepared Statement ที่จะผิดช่องโหว์ของการเกิดข้อผิดพลาดในการ Query ที่เกิดจากการรับค่าในรูปแบบต่าง ๆ รวมทั้งป้องกันการ Hack ผ่านพวก SQL Injection ได้เป็นอย่างดี
SQL Server PDO Driver
PDO("sqlsrv:server=$serverName ; Database = $dbName", $userName, $userPassword);
MySQL PDO Driver
PDO('mysql:host=localhost;dbname=test', $user, $pass);
Oracle PDO Driver
<?php
$tns = "
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yourip)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
";
$db_username = "youname";
$db_password = "yourpassword";
try{
$conn = new PDO("oci:dbname=".$tns,$db_username,$db_password);
}catch(PDOException $e){
echo ($e->getMessage());
}
?>
pgSQL PDO Driver
new PDO('pgsql:host=192.168.137.1;port=5432;dbname=anydb', 'anyuser', 'pw');
สำหรับ PDO กับ sqlsrv สามารถใช้ได้ตั้งแต่ PHP V 5.1.x เป็นต้นไป แต่ปัจจุบันแนะนำให้ใช้กับ PHP V 5.3 หรือ 5.4 เป็นต้นไป และในการติดตั้งจำเป็นจะต้องเปิดใช้งาน php_pdo_sqlsrv.dll ซึ่งเป็น extension สำหรับ sqlsrv แต่ในการเรียกใช้ extension จะต้องหาไฟล์ php_pod_sqlsrv.dll ที่ตรงกับ Version ของ PHP ที่เรียกใช้ด้วย
php_pdo.dll (สำหรับ Class ของ PDO)
php_pdo_sqlsrv.dll (เป็น Driver ของ sqlsrv ไว้ติดต่อกับ SQL Server)
Download php extension (sqlsrv,pdo) for PHP 5.4, PHP 5.5, PHP 5.6
อย่าลืมว่าจะต้องหาไฟล์ php_pdo.dll และ php_pdo_sqlsrv.dl ให้ตรงกับ Version ของ PHP ด้วย
อ่านเพิ่มเติมเกี่ยวกับ Version ของ PHP
http://php.net/manual/en/pdo.installation.php
การเรียกใช้งาน function ของ PHP กับ 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>
ทดสอบการทำงาน
Error
Fatal error: Class 'PDO' not found in D:\AppServ\www\myphp\connect.php on line 16
กรณีที่ Error นี้ นั่นคือ PHP ยังไม่รองรับ function ของ PDO นั่นคือจะต้องทำการเปิด extension ใน php.ini ซะก่อน
ให้ Copy ไฟล์ php_pdo.dll ไปไว้ในโฟเดอร์ของ extension เปิดไฟล์ php.ini แล้วเปิด extension
extension=php_pdo.dll
จากนั้น Restart ตัว Web Server ซะ 1 ครั้ง
Error
Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in D:\AppServ\www\myphp\connect.php:16 Stack trace: #0 D:\AppServ\www\myphp\connect.php(16): PDO->__construct('sqlsrv:server=l...', 'sa', '') #1 {main} thrown in D:\AppServ\www\myphp\connect.php on line 16
ถ้ายังมี Error นี้ 'could not find driver' แสดงว่ายังไม่รองรับ Driver ของ sqlsrv:
ให้ Copy ไฟล์ php_pdo_sqlsrv.dll ไปไว้ในโฟเดอร์ของ extension เปิดไฟล์ php.ini แล้วเปิด extension
extension=php_pdo_sqlsrv.dll
จากนั้น Restart ตัว Web Server ซะ 1 ครั้ง (ในรูปชื่อไฟล์อาจจะไม่ตรง เพราะตอนนี้ผู้เขียนใช้ PHP V 5.2 เลยจะต้องหา dll ที่รองรับ PHP V 5.2)
วิธีการตรวจสอบง่าย ๆ ก็คือเรียกดูจาก phpinf(); ซึ่งจะต้องรองรับ sqlsrv
ซึ่งถ้าใช้งานได้แล้ว เราจะสามารถใช้ PHP กับ sqlsrv เพื่อ Connect ไปยัง Database ของ SQL Server ได้เลย
.
|
ช่วยกันสนับสนุนรักษาเว็บไซต์ความรู้แห่งนี้ไว้ด้วยการสนับสนุน Source Code 2.0 ของทีมงานไทยครีเอท
|
|
|
By : |
ThaiCreate.Com Team (บทความเป็นลิขสิทธิ์ของเว็บไทยครีเอทห้ามนำเผยแพร่ ณ เว็บไซต์อื่น ๆ) |
|
Score Rating : |
|
|
|
Create/Update Date : |
2014-09-05 12:50:06 /
2017-03-25 01:21:43 |
|
Download : |
No files |
|
Sponsored Links / Related |
|
|
|
|
|
|
|