Bài này là một kinh nghiệm nho nhỏ của tôi trong quá trình thực hiện một số dự án gần đây. Nhiều bạn sẽ cho rằng tôi “điên” nên mới sử dụng SQL Server để làm việc với PHP mà không sử dụng MySQL trong bộ LAMP. Thực ra tôi không điên mà đôi lúc do nhu cầu của dự án hoặc do yêu cầu chuyển đổi dữ liệu từ mã nguồn này sang mã nguồn khác khiến chúng ta phải thực hiện việc thao tác “ngược đời” này. Nhờ vậy, tôi mới có thêm chút kinh nghiệm để chia sẻ với mọi người.
Câu chuyện của tôi bắt đầu cách đây không lâu khi tôi nhận nhiệm vụ chuyển đổi và thiết kế lại cơ sở dữ liệu từ MS SQL Server sang MySQL. May mắn cho tôi là trước đây, thời gian ở trường tôi thường làm việc với cơ sở dữ liệu MS SQL Server 2008 nên việc tương tác với MS SQL Server không khó. Cái khó là thời gian 5 năm qua tôi chưa code một dòng .NET nào nên giờ quên sạch nếu không muốn nói là mù tịt. Thế là đành phải tìm cách sử dụng ngôn ngữ mình biết nhiều nhất(PHP) để làm việc với SQL Server.
Để thao tác với MS SQL Server trên nền PHP, bạn cần phải bổ sung cho PHP của bạn thêm sức mạnh để đọc và hiểu. May mắn cho chúng ta là anh Gate đẹp trai không đến mức ghét PHP nên đã chuẩn bị sẵn cho chúng ta bộ Extension để PHP có thể làm việc được với hệ quản trị cơ sở dữ liệu SQL Server của anh ấy. Trọng tâm của bộ driver này là PDO_SQLSRV giúp đóng vai trò như một API để thao tác với MS SQL Server.
Để PHP có thể thao tác được với SQL Server, bạn cần bổ sung vào thư viện Extension của PHP thêm một bộ Driver tên Microsoft Drivers 3.0 for PHP for SQL Server. Bạn chú ý, chúng ta có 2 version 2.0 và 3.0 của bộ thư viện này. Bộ 3.0 sử dụng cho PHP phiên bản từ 5.3.6 trở về sau. Còn nếu bạn sử dụng phiên bản dưới 5.3.6 thì chúng ta download SQLSRV20.EXE nhé.
Sau khi download về bạn giải nén file và chép tất cả các file DLL nhận được vào thư mục
Ổ_chứa\AppServ\php5\ext\
Đây là thư mục chứa tất cả các Extension của PHP. Ở đây tôi sử dụng AppServ nên đường dẫn của tôi có kiểu như vậy, nếu bạn sử dụng XAMP hoặc WAMP thì đường dẫn có khác tí nhưng tôi chắc rằng bạn sẽ tìm ra nơi chúng ta bổ sung các file Extension mới down về dễ dàng.
Bước tiếp theo, chúng ta cấu hình cho file php.ini để kích hoạt các Extension mới bổ sung như sau:
Bạn mở file php.ini và tìm đến đoạn
[code];extension=php_bz2.dllextension=php_curl.dll[/code]
Bổ sung vào trên nó đoạn code sau:
[code]extension=php_pdo.dllextension=php_sqlsrv_52_ts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll[/code]
Đoạn mã này sẽ giúp cho PHP nhận và sử dụng được các Extension mà chúng ta mới thêm vào như tôi đã nói ở trên.
Vậy là chúng ta đãu hình xong cho PHP. Từ giờ bạn có thể kết nối với MS SQL Server thông qua PHP và bộ driver do Microsoft cung cấp.
Dưới đây là đoạn code mà tôi đã viết để lấy dữ liệu từ MS SQL Server bằng cách sử dụng nhiều quyền truy cập Windows Authentication, hi vọng như một ví dụ cho bạn khi tương tác.
[php]//SQL Server Connector
/* Specify the server and connection string attributes. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"database_name", "CharacterSet" => "UTF-8");
/* Connect using Windows Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Unable to connect.</br>";
die( print_r( sqlsrv_errors(), true));
}
//MySQL Connector
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
$selected = mysql_select_db($mysql_databasename,$dbhandle)
or die("Could not select examples");
$tsql = "SELECT * FROM table_name";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
echo "Error in executing query.</br>";
die( print_r( sqlsrv_errors(), true));
}
while( $result = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
echo $result["User"];
}
Ngoài ra bạn có thể tìm thấy rất nhiều sample khác được cung cấp trong Manual đi kèm với gói download mà bạn đã download về.
Ghi lại để nhớ và sử dụng khi cần nhé các bạn.
và hãy comment nếu bạn thấy bài viết này có ích cho bạn.