||  網站導覽  ||  留言版
 
  站長 x 管理人
 
  文章分類
    JAVA
    Database資料庫
    應用程式
    文書處理
    normal一般設定
    Web-design網頁設計
    Virtual Machine虛擬機器
    MIS網管
       Mac
       不分類
       Windows
       Linux
    media多媒體
    未分類
 
 
 
 
「實作」php5.6在windows2012R2使用sqlsrv_connect連線SQL SERVER
 
 
 
 
freetds php_dblib.dll只支援到php5.3(目前找到的最新版本支援到5.5)
只好換個方式了

1.安裝XAMPP or Appserv or 自行安裝apache/IIS+php
SQL SERVER元件對php版本的最低需求是5.2.13(含)以上
 
先在頁面尋找Supported PHP Versions,看一下對應的php版本
確定我們要的元件是那一版
以php5.6來說,對應的就是3.2版

所以下載SQLSRV32.EXE,這個執行檔只是用來解壓dll檔的

因為我們要用apache的模組方式執行,(IIS或是跑CGI請用nts版本)
所以將解出來的dll(ts版本)
php_sqlsrv_56_ts.dll

php_pdo_sqlsrv_56_ts.dll
丟到php/ext目錄下
 
3.
解開後,在php.ini的Dynamic Extensions區塊
加上
extension=php_sqlsrv_56_ts.dll 請依實際版本
extension=php_pdo_sqlsrv_56_ts.dll 請依實際版本
 
重啟apache後
寫一隻phpinfo(),尋找sqlsrv就會看到有一項獨立的表格(圖片待補)
 
 
4.下載Microsoft® ODBC Driver 11 for SQL Server® - Windows

請依作業系統版本
x64請下載安裝1028\amd64\msodbcsql.msi
x32請下載安裝1028\x86\msodbcsql.msi
 
 
5.在程式指定sqlserver連線編碼
 
$serverName = "192.168.1.1"; //serverName\instanceName
$connectionInfo = array( "Database"=>"資料庫名稱", "UID"=>"sa", "PWD"=>"123456","CharacterSet" => "UTF-8");//utf8要加上CharacterSet
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
}else{
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}

$sql = "SELECT * FROM TEST WHERE CREATETIME<=?";
$params = array(date("Y-m-d H:i:s"));
 
$stmt = sqlsrv_query( $conn, $sql, $params);
if($stmt) {
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) {
print_r($row);
}
}else{
die( print_r( sqlsrv_errors(), true));
}
include_once("adodb/adodb.inc.php");
 
$conn = &ADONewConnection('mssqlnative');//這裡要指定用mssqlnative
$conn->debug=true;
$conn->connectionInfo["CharacterSet"]='UTF-8';//utf8要加上這一行
$conn->Connect('192.168.1.1', 'sa', '123456', '資料庫名稱'); 
 
 
注意:
如果使用xampp,在安裝路徑底下:\xampp\php\pear也有一個adodb的套件
include不注意的話,可能會跟開發者另外下載的版本混淆

最後還是要說一句,自從php把mssql模組抽掉之後,
Windows和Linux透過第三方連接mssql的解決方案也漸漸不太一樣,
以後就不能只寫一份code布署到不同平台上了啊
 
 
 
 
 
Copyright © 2012 NBOX. All Rights Reserved.