พอดีเห็นถามกันบ่อยๆ เกี่ยวกับ PHP และ SQL Express วันนี้เลยจัดทำบทความให้ซะหน่อย ซึ่งอันที่จริงและก็ไม่ต่างอะไรกับ SQL Server รุ่นปกติที่ใช้กันทั่ว ๆ ไป
โดยขั้นแรกให้ตรวจสอบ php.ini ว่ารองรับ function mssql() หรือยัง โดยใช้คำสั่ง phpinfo();
phpinfo();
ถ้าสามารถใช้ function mssql() ได้จะขึ้นเหมือนในรูป แต่ถ้าไม่มีให้ทำตามขั้นตอนดังต่อไปนี้
sqlexpress.php
<html>
<head>
<title>ThaiCreate.Com Tutorials</title>
</head>
<body>
<?
$objConnect = mssql_connect(".\SQLEXPRESS","","");
if($objConnect)
{
echo "Database Connected.";
}
else
{
echo "Database Connect Failed.";
}
mssql_close($objConnect);
?>
</body>
</html>
เขียนคำสั่งเชื่อมต่อกับฐานข้อมูลเหมือนในตัวอย่าง โดยใช้ Instance Name ให้ถูกต้อง
ปกติจะใช้ SERVER-NAME\SQLEXPRESS หรือ .\SQLEXPRESS
(SQL Server 2005 Express และ SQL Server 2008 Express ใช้เหมือนกัน)
รูปการใช้การเชื่อมต่อผ่าน Instance ของ SQL Server Express จะเห็นว่ามีการใช้ Instance ว่า .\SQLEXPRESS
หลังจากสร้างไฟล์เรียบร้อยแล้ว ให้ทดสอบการเชื่อมต่อ
Error Case 1
Fatal error: Call to undefined function mssql_connect() in C:\AppServ\www\myphp\sqlexpress.php on line 6
ข้อผิดพลาดนี้เกิดจาก php ยังไม่ได้เปิดการใช้งาน extension ของ mssql การแก้ไขให้เปิด extension ของ mssql ด้วยการ ให้ทำการดาวน์โหลดตัว extension ชื่อ php_mssql.dll
php_mssql.dll
ไปไว้ในโฟเดอร์ extension ของ php เช่น C:\AppServ\php5\ext หรือสามารถตรวจสอบ Path ได้ที่ php.ini
Start -> Run -> php.ini
extension_dir = "C:/AppServ\php5\ext"
.
.
.
.
.
extension=php_mssql.dll
.
.
.
.
.
extension=php_mssql.dll
เปิดด้วยการลบ ; ออก เฉพาะฉะนั้นจะเหลือแค่ extension=php_mssql.dll หรือถ้าไม่มีก็ให้เพิ่มบรรทัดนี้เข้าไป
จากนั้น ให้ทำการ save ไฟล์ php.ini พร้อมกับ Restart Apache หนึ่งรอบ จากนั้นให้ลองใหม่อีกครั้ง
Error Case 2
หลังจากเปิด extension=php_mssql.dll ยังไม่สามารถใช้งานได้ ให้ลองตรวจสอบ Log ของ Apache โดยไปที่ C:\AppServ\Apache2.2\logs\error.log
จะเห็นว่ามี Error
PHP Warning: PHP Startup: Unable to load dynamic library 'C:/AppServ\\php5\\ext\\php_mssql.dll' - The specified module could not be found.\r\n in Unknown on line 0
วิธีการแก้ไข
Windows 7 32-bit
Copy ntwdblib.dll ไปไว้ที่ C:\Windows\system32\
Windows 7 64-bit
Copy ntwdblib.dll ไปไว้ที่ C:\Windows\SysWOW64\
และก็ Restart Apache หรือ Web Server ถ้าไม่มีอะไรผิดพลาดขั้นตอนนี้จะสามารถผ่านไปได้ โดยให้ตรวจสอบ Error log ที่ C:\AppServ\Apache2.2\logs\error.log ว่ามี extension ที่โหลดไม่สมบูรณ์หรือไม่
การเชื่อมต่อสมบูรณ์
และก็ทดลองการเชื่อมต่อใหม่อีกครั้ง ถ้าไม่มีอะไรผิดพลาดจะสามารถใช้งานได้ ส่วนการเชื่อมต่อกับ Database หรือ การ Insert/Update/Delete ข้อมูลใน SQL Express สามารถดูตัวอย่างได้จากบทความ PHP กับ SQL Server ซึ่งจะใช้รูปแบบคำสั่งเหมือนกันทุกประการ
Go to : PHP SQL Server : Connect to Microsoft SQL Server ภาษา PHP กับฐานข้อมูล SQL Server
Go to : PHP and SQL Server 2005
Go to : PHP and SQL Server 2008
การตรวจสอบการตั้งค่าอื่น ๆ ของ SQL Express
1.ตรวจสอบ Service ของ SQLExpress ว่าทำงานอยู่หรือไม่
Control Panel\All Control Panel Items\Administrative Tools
Service จะต้องอยู่ในสถานะ Start
2.ตรวจสอบ Protocal Name และ Status
Start menu -> Programs - > SQL Server... \... SQL Server Configuration Manager
ทำการ Enabled ตัว Shared Menu , Named Pices , TCP/IP (ปกติเปิด TCP/IP น่าจะพอเพื่อให้สามารถเรียกผ่าน Lan ได้)
2.ตรวจสอบ SQL Server Surface Area Configuration
Start menu -> Programs - > SQL Server... \... SQL Server Surface Area Configuration
คลิกที่ Surface Area Configuration for Services and Connections
ปรับแต่ง บน Tree Database Engine -> Remote Connections -> Local and remote connections -> Using TCP/IP only เพื่อให้สามารถเรียกใช้งานผ่าน Lan ได้
อ้างอิง http://www.thaicreate.com/community/config-php-for-sql-express-windows7-32-64-bit.html
No comments:
Post a Comment