Cài đặt php mssql_connect

Hôm nay mình xin hướng dẫn bạn kết nối php với cơ sở dữ liệu microsoft Sqlserver 2008. Default php connection with mysql, but asp then doing with mssql server. Nhưng trong một số trường hợp bạn muốn viết ứng dụng PHP của mình kết nối với cơ sở dữ liệu Sqlserver để dễ dàng thực hiện. Bạn có thể đọc bài viết của mình để kết nối

Cài đặt php mssql_connect

- Để kết nối PHP với SQL SERVER, microsoft đã cung cấp cho chúng ta một thư viện để PHP có thể làm việc được với Sqlserver

Link tải driver Sql cho php. https. //www. Microsoft. com/en-us/tải xuống/chi tiết. aspx?id=20098

Tùy theo phiên bản PHP mà bạn đang sử dụng mà tải thư viện sql driver cho php cho thích hợp

- Ở bài viết này mình dùng Xampp 1. 7. 7 đang sử dụng PHP 5. 3, mình thấy phiên bản php 5. 3 là kết nối tương thích với sqlserver, mình đã thử kết nối PHP v7 với mssql nhưng không làm việc tốt bằng phiên bản mà mình cũng đang sử dụng.  

Video hướng dẫn từng bước. video này mình sử dụng Codeigniter Framework for php to connect with mssql server

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 phát điên mà đôi lúc do nhu cầu của dự án hoặc 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 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 nền tảng 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à 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. . 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 bổ sung thêm sức mạnh cho PHP của mình để đọc và hiểu. May mắn cho chúng ta là anh Gate đẹp trai chưa đế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ệ thống quản trị cơ sở dữ liệu SQL Server của anh ấy. Trọng tâm của bộ trình điều khiển này là PDO_SQLSRV giúp đóng vai trò như một API để thao tác với MS SQL Server.

Cài đặt php mssql_connect


Để PHP có thể thao tác được với SQL Server, bạn cần bổ sung vào thư viện Tiện ích mở rộng của PHP, thêm một bộ Trình điều khiển có tên Microsoft Drivers 3. 0 cho PHP cho SQL Server. Bạn chú ý, chúng ta có 2 phiên bản 2. 0 và 3. 0 of this library library. bộ 3. 0 used for PHP version from 5. 3. 6 trở về sau. Còn lại nếu bạn sử dụng phiên bản dưới 5. 3. 6 thì chúng ta tải SQLSRV20 về. EXE nhé.

Sau khi tải xuống, bạn giải nén tệp và sao chép tất cả các tệp DLL nhận được vào thư mục



Mã.

Ổ_chứa\AppServ\php5\ext\

Đây là thư mục chứa tất cả các Tiện ích mở rộng 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 chút nhưng tôi chắc chắn rằng bạn sẽ tìm ra nơi chúng tôi bổ sung các tiện ích mở rộng tệp mới xuống một cách 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 tiện ích bổ sung mới như sau.

Bạn mở tệp php. ini và tìm đến đoạn



Mã.

;extension=php_bz2.dll
extension=php_curl.dll

Bo sung vào đoạn mã sau của nó.

Mã.

extension=php_pdo.dll
extension=php_sqlsrv_52_ts_vc6.dll
extension=php_pdo_sqlsrv_52_ts_vc6.dll

Đoạn mã này sẽ giúp PHP nhận và sử dụng được các Tiện ích mở rộng mà chúng tôi mới bổ sung như tôi đã nói ở trên.

This is they ta đã hoàn thành cấu hình cho PHP. Từ giờ bạn có thể kết nối với MS SQL Server thông qua PHP và bộ điều khiển do Microsoft cung cấp.

Dưới đây là đoạn mã 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.
"
;
     die( 
print_rsqlsrv_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.
"
;
         die( 
print_rsqlsrv_errors(), true));
    }

    while( 
$result sqlsrv_fetch_array$stmtSQLSRV_FETCH_ASSOC) ) {
            echo 
$result["User"];
    }

Xin ra bạn có thể tìm thấy rất nhiều mẫu khác được cung cấp trong Hướng dẫn sử dụng đi kèm với gói tải xuống mà bạn đã tải về.

Ghi lại để nhớ và sử dụng khi cần nhé các bạn.

và hãy bình luận nếu bạn thấy bài viết này hữu ích cho bạn.

 

Tiện bài của bác Baby, mình post ví dụ lên đây luôn, khỏi phải tạo thớt mới. Thành thật xin lỗi bác cưng nhé
Cài đặt php mssql_connect

Mặc nhiên quan niệm rằng bạn đã tham khảo thêm MySQL. Dữ liệu rồi. (Nếu bạn nào chưa có DLL này thì hỏi anh GU
Cài đặt php mssql_connect
)
Hoặc vào thẳng trang này lựa chọn phiên bản phù hợp.
http. // nhà phát triển. mysql. com/downloads/connector/net/6. 1. html
Đầu tiên ta viết dbconnecter 1 lớp đơn giản như sau.

Mã.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MySql.Data.MySqlClient;
using System.Collections;
using System.Data;

namespace WebApplication1
{
    public class DBConnecter
    {
        private MySqlConnection connection;
        private string server;
        private string database;
        private string uid;
        private string password;

    //Constructor
    public DBConnecter()
    {
        Initialize();
    }

    //Initialize values
    private void Initialize()
    {
        server = "localhost";
        database = "connectcsharptomysql";
        uid = "username";
        password = "password";
        string connectionString;
        connectionString = "SERVER=" + server + ";" + "DATABASE=" + 
		database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";

        connection = new MySqlConnection(connectionString);
    }

    //open connection to database
    private bool OpenConnection()
    {
        try
        {
            connection.Open();
            return true;
        }
        catch (MySqlException ex)
        {
           
            switch (ex.Number)
            {
                case 0:
                  //  throw("Cannot connect to server.  Contact administrator");
                    break;

                case 1045:
                  //  throw("Invalid username/password, please try again");
                    break;
            }
            return false;
        }
    }

    //Close connection
    private bool CloseConnection()
    {
        try
        {
            connection.Close();
            return true;
        }
        catch (MySqlException ex)
        {
            //throw (ex.Message);
            return false;
        }
    }
    public object ExeSaclar(string _Command, SortedList _pr)
    {
        //return this.;
        this.OpenConnection();
        MySqlCommand cmd = new MySqlCommand(_Command, connection);
        foreach (object _key in _pr.Keys)
        {
            cmd.Parameters.AddWithValue(_key.ToString(), _pr[_key]);
        }
        //ExecuteScalar will return one value
        object rs = cmd.ExecuteScalar();
        this.CloseConnection();
        return rs;
    }
    public void ExeNonQuery(string _Command, SortedList _pr)
    {
        //return this.;
        this.OpenConnection();
        MySqlCommand cmd = new MySqlCommand(_Command, connection);
        foreach (object _key in _pr.Keys)
        {
            cmd.Parameters.AddWithValue(_key.ToString(), _pr[_key]);
        }
        //ExecuteScalar will return one value
        object rs = cmd.ExecuteNonQuery();
        this.CloseConnection();
       // return rs;
    }
    public void FillTable(string _Command, SortedList _pr,DataTable dt)
    {
        this.OpenConnection();
        MySqlCommand cmd = new MySqlCommand(_Command, connection);
        foreach (object _key in _pr.Keys)
        {
            cmd.Parameters.AddWithValue(_key.ToString(), _pr[_key]);
        }
        MySqlDataAdapter da = new MySqlDataAdapter(cmd);
        da.Fill(dt);
        this.CloseConnection();
    }

    }
}

 

Tiếp theo ta sử dụng lớp dbconnecter này để thao tác với csdl
Đầu tiên bạn tạo 1 cơ sở dữ liệu có tên là "test" chẳng hạn, sau đó thêm bảng này vào.

Mã.

create table tableInfo
(
InfoID INT NOT NULL AUTO INCREMENT,
InfoTitle VARCHAR(30),
InfoValue INT,
PRIMARY KEY(id)
);

Tiếp tục theo cách tạo Model lớp

Mã.

//---------Model Class------
using System;
using System.Collections.Generic;
using System.Text;

namespace WebApplication1.Model
{
    public class tableinfoInfo
    {
        private int _InfoID = 0;

        public int InfoID
        {
            get
            {
                return _InfoID;
            }
            set
            {
                _InfoID = value;
            }
        }

        private string _InfoTitle = string.Empty;

        public string InfoTitle
        {
            get
            {
                return _InfoTitle;
            }
            set
            {
                _InfoTitle = value;
            }
        }

        private int _InfoValue = 0;

        public int InfoValue
        {
            get
            {
                return _InfoValue;
            }
            set
            {
                _InfoValue = value;
            }
        }



    }
    public class tableinfoCollections : List { }

}

Tiếp tục theo cách tạo quyền truy cập cơ sở dữ liệu lớp

Mã.

//---------Sqlserver access Class------
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using WebApplication1.Model;
using System.Collections;

namespace WebApplication1.MySQLServerDal
{
    public class D_tableinfo 
    {
        DBConnecter _connecter = new DBConnecter();
        public DataTable SelectAll()
        {
            try
            {
                string strSelect = @"SELECT * FROM tableinfo";
                DataTable dt = new DataTable();

                //DataSet ds = Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataset(Common.Common.Instance.ConnectionString, CommandType.Text, strSelect);
                _connecter.FillTable(strSelect,new SortedList(),dt);
                return dt;
            }
            catch
            {
                return new DataTable();
            }
        }
        public DataTable SelectAll(String sSelect, string sWhere, SortedList _pr)
        {
            try
            {
               
                string strSelect = @"SELECT " + sSelect + " FROM tableinfo WHERE " + sWhere;
                DataTable dt = new DataTable();

                //DataSet ds = Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataset(Common.Common.Instance.ConnectionString, CommandType.Text, strSelect);
                _connecter.FillTable(strSelect, new SortedList(), dt);
                return dt;
            }
            catch
            {
                return new DataTable();
            }
        }
        public tableinfoInfo SelectByID(int _InfoID)
        {
            try
            {
                tableinfoInfo _info = new tableinfoInfo();
                string strSelect = @"SELECT * FROM tableinfo WHERE [email protected]";
                SortedList _pr = new SortedList();
                _pr.Add("@InfoID", _InfoID);
                MySql.Data.MySqlClient.MySqlDataReader _dr = _connecter.ExeReader(strSelect, _pr);
                while (_dr.Read())
                {
                    _info.InfoID = int.Parse(_dr["InfoID"].ToString());
                    _info.InfoTitle = _dr["InfoTitle"].ToString();
                    _info.InfoValue = int.Parse(_dr["InfoValue"].ToString());
                }
                _dr.Close();
                //Chú ý chỗ này chưa close connection
                return _info;
            }
            catch
            {
                return null;
            }
        }

    
        public int Insert(tableinfoInfo _minfo)
        {
            try
            {
                string sInsert = @"INSERT INTO tableinfo (
	                                 InfoTitle, InfoValue
                                ) VALUES (
	                                  @InfoTitle,@InfoValue
                                )

                              ";

                SortedList _spr=new SortedList();
                _spr.Add("@InfoTitle",_minfo.InfoTitle);
                 _spr.Add("@InfoValue",_minfo.InfoValue);
                _connecter.ExeNonQuery(sInsert,_spr);
                //int rs = Convert.ToInt32(SqlHelper.ExecuteScalar(Common.Common.Instance.ConnectionString, CommandType.Text, sInsert, _prcl.ToArray()));
                return 1;
            }
            catch
            {

                return -1;
            }
        }

        public int Delete(int _InfoID)
        {
            try
            {
                string strSelect = @"DELETE FROM tableinfo WHERE [email protected]";
                SortedList _spr = new SortedList();
                _spr.Add("InfoID",_InfoID);
                _connecter.ExeNonQuery(strSelect, _spr);
                return 1;
            }
            catch
            {
                return -1;
            }
        }
        public int Update(tableinfoInfo _minfo)
        {
            try
            {
                string sUpdate = @"UPDATE tableinfo SET
	                           [email protected], [email protected]
                                WHERE
	                            InfoID = @InfoID";
                SortedList _spr = new SortedList();
                _spr.Add("@InfoID", _minfo.InfoID);
                _spr.Add("@InfoTitle", _minfo.InfoTitle);
                _spr.Add("@InfoValue", _minfo.InfoValue);
                _connecter.ExeNonQuery(sUpdate, _spr);
                return 1;
            }
            catch
            {
                return -1;
            }

        }
        public object GetProperty(int _InfoID, string _PropertyName)
        {
            string sSelect = @"SELECT " + _PropertyName + "  FROM tableinfo  WHERE [email protected]";
            SortedList _spr = new SortedList();
            _spr.Add("InfoID", _InfoID);
            object _rs = _connecter.ExeSaclar(sSelect, _spr);

            return _rs;
        }
        public int UpdateProperty(int _InfoID, string _PropertyName, object _PropertyValue)
        {
            string sSelect = @"Update tableinfo SET " + _PropertyName + "[email protected] WHERE [email protected]";
            SortedList _spr = new SortedList();
            _spr.Add("InfoID", _InfoID);
            _spr.Add("@PropertyValue", _PropertyName);
            try
            {
                _connecter.ExeNonQuery(sSelect, _spr);
                return 1;
            }
            catch
            {
                return -1;
            }
        }
    }

}

// Còn một vài hàm nữa mình lược bớt cho đỡ rối.
Lớp mô hình và lớp Truy cập cơ sở dữ liệu này tự nó tạo ra, có thể thay thế lớp truy cập cơ sở dữ liệu này và trình kết nối đối tượng theo một cách linh hoạt là chúng ta có thể sử dụng được cho các cơ sở dữ liệu khác.
Chúc bác thành công