1.下載微軟的php連接驅動:SQLSRV30.EXE(5.4對應,后面的native client要用2012)/SQLSRV20.EXE(5.3對應,native client要用2008)/SQLSERV31.EXE對應5.5
2.解壓SQLSERV30.EXE,拷貝對應extension到php的ext目錄
3.配置php.ini
extension=php_sqlsrv_54_ts.dll(54為5.4版本,ts為線程安全,nts為非線程安全,帶pdo的是用pdo方式連接,sqlsrvxx.exe里都有)
mssql.secure_connection = Off改為on 很多教程沒寫這個
4.重啟IIS/Apache
5.在sqlserver服務器配置TCP/IP連接
6.在php服務器下載安裝sqlserver native client(2014.11.13補充:win8下裝上這玩意http://www.microsoft.com/en-us/download/details.aspx?id=20098)
7.測試代碼
$database = "TimeTracker"; $uid = "sa"; $pwd = "123"; $Server = "192.168.0.152"; $conInfo=array('Database'=>$database,'UID'=>$uid,'PWD'=>$pwd); $link=sqlsrv_connect($Server,$conInfo); if( $link ){ // echo "Connection established.\n"; $query = 'SELECT * FROM T_Sys_UserInfo'; /* Set parameter values. */ $params = array(75123, 5, 741, 1, 818.70, 0.00); /* Prepare and execute the query. */ $stmt = sqlsrv_query( $link, $query, $params); while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) { echo $row['UseName'].", ".$row['RealName']."\n"; } } else{ //echo "Connection could not be established. "; print_r( sqlsrv_errors(), true); if( ($errors = sqlsrv_errors() ) != null) { foreach( $errors as $error ) { echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br />"; echo "code: ".$error[ 'code']."<br />"; echo "message: ".$error[ 'message']."<br />"; } } die(""); }
PDO方式連接:
<?php header("Content-Type: text/html;charset=utf-8"); class mssql{ private $host; private $username; private $password; private $database; private $handle; private function __construct (Array $config){ $this -> host = $config['host']; $this -> username = $config['username']; $this -> password = $config['password']; $this -> database = $config['database']; $this -> init(); } private function init() { $dsn = 'sqlsrv:server = '.$this -> host.';database = '.$this->database; $this -> handle = new PDO($dsn,$this -> username, $this -> password); } public static function GetInstance(array $config = null) { if (null == $config) { return NULL; } static $db = null; if (null == $db) { $c = __CLASS__; $db = new $c($config); }; return $db -> handle; } } $config = array( 'host' => '192.168.0.152,1433', 'database' => 'TimeTracker', 'username' => 'sa', 'password' => '123' ); $mssql = mssql::GetInstance($config); $result = $mssql->query('SELECT * FROM T_Sys_UserInfo'); foreach($result as $row){ echo $row[2]; } ?>