PHP访问SAP HANA数据库

来源:互联网 发布:java ojdbc6 编辑:程序博客网 时间:2024/06/05 07:30

最近接到一个项目,因为客户嫌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参数的。

希望能对有同类需求的朋友有所帮助,有问题欢迎交流。


原创粉丝点击