1. 程式人生 > >PHP訪問SAP HANA資料庫

PHP訪問SAP HANA資料庫

最近接到一個專案,因為客戶嫌LUMIA的 License太貴,使用者又多,所以想用省錢的辦法看SAP HANA的報表(B/S架構),所以給了用PHP做HANA報表的方案。

首先要考慮的是連線問題,原來我做專案時,都是優先考慮PHP ADODB元件,但PHP ADODB元件中沒有封裝HANA的驅動,所以就只好用ODBC的辦法。

SAP HANA 的ODBC聯接有很多坑,其實都是源於對HANA, Windows作業系統,PHP ODBC的 64bit, 32bit的概念模糊混淆所至。

這裡要提到的第一個重點,就是PHP ODBC要聯接SAP HANA資料庫,必須要安裝HANA ODBC client的 32 bit驅動,64bit的 ODBC 暫不支援,我已經測試了N遍不通,ODBC驅動安裝完以後,在windows\SysWOW64\目錄下開啟odbc32.exe, 然後自行新建一個系統DSN,選擇HDBODBC32驅動,輸入ServerNode, 使用者名稱,密碼等資訊,點connect,如果 OK, 那麼恭喜你完成了第一步。

在講第二個重點之前,我先說明一下我的開發環境 Windows2008 R2(64Bit)作業系統,PHP的環境我採用的是WAMP元件,這第二個重點就是必須安裝32 Bit 的WAMP, 而不是64bit的,否則用odbc_connect函式時會報錯,連線不上資料來源。

安裝好 WAMP環境後,寫一個debug.php如下

$server_node=“192.168.2.11:30015”;

$db_name=“test01';

$conn = odbc_connect("Driver=HDBODBC32;ServerNode=$server_node;Database=$db_name;",$username,$password,SQL_CUR_USE_ODBC

);

//這裡要注意兩點,直接連你建立的DSN名字是不行的,因為系統預設是去64bit的ODBC中去找DSN名字,所以這裡的odbc_connect中要寫完整的包括驅動名稱的連線字串,另外在最後加上游標型別 SQL_CUR_USE_ODBC

if($conn){
echo "so good! System connected";
}else{
echo "So bad! System cannot be connected!";
}

在瀏覽器中開啟 http://localhost/testhdb/debug.php

如果你看到 so good! System connected, 那恭喜你,可以進行下面的開發了。

如果在開發中遇到一些問題,請參考我轉載的兩個英文帖,專門講ODBC引數的。

希望能對有同類需求的朋友有所幫助,有問題歡迎交流。