2014年3月20日木曜日

WindowsのPHPからHANA DBに接続するとき

ODBCドライバインストールと文字コードまわりでハマりました。ポイントは、
・PHPが32bitの場合、hana clientを32bitでインストールすること
・ODBCの32bit設定でSystem DSNを設定すること
・odbc_connectのパラメータに"CHAR_AS_UTF8=true"を指定すること
・NVARCHAR2カラムの読み込みはCAST(col AS VARCHAR)のようにCASTすること
・WHERE句はプレースホルダにして指定すること
HANAのリビジョンが71以上だと解消される?ようです。

$driver = "HDBODBC32";
$host = "192.168.0.1";
$db_name = "DB01";
$conn = odbc_connect("Driver=$driver;ServerNode=$host;Database=$db_name;CHAR_AS_UTF8=true", $username, $password, SQL_CUR_USE_ODBC);
$sql = "SELECT KUNNR, CAST(NAME1 AS VARCHAR) AS NAME1 FROM KNA1 WHERE NAME1 LIKE ?";
$rs = odbc_prepare($conn, $sql);
odbc_execute($rs, array("%テスト%"));

0 件のコメント:

コメントを投稿