[PHP-users 4775] Re: PHP4+FteeTDS-MSSQL7.0にて日本語SQL

php-users@php.gr.jp php-users@php.gr.jp
Thu, 17 Jan 2002 15:16:49 +0900


大野と申します。

私のところでも同様な環境を使用しているので、レスいたしました。

環境は、

OS:FreeBSD 4.4-RELEASE
apache-1.3.22 + php-4.1.0 + freeTDS-0.53 - MSSQLServer6.5(WinNT4.0)

この環境で、試しに、日本語を含むSQL文を発行してみましたが、
正常に検索できました。


川原さんと違うところは、分かる範囲で、

1)sybase関数ではなくて、MSSQLサーバ関数を使っている

 MSSQLサーバ関数 != sybase関数なところが何かある?
 (すみません、私もわかりません)

2)FreeTDSのバージョンが違う、また、ソースからコンパイルしている

 ./configure --with-tdserver=4.2 --enable-msdblib
 でconfigureしています。

3)MSSQLServerのバージョンが違う

 6.5と7.0で何が違うのかわかりませんので、何ともいえないです。
 ただし、接続テストはしたことがあります。(日本語なしで)
 そのときのinterfacesファイルには、以下のように明示的にtds4.2を
 指定しました。(そうしないと接続できなかった記憶があります)

 myserver
       query tcp tds4.2 192.168.69.17 1433
       master tcp tds4.2 192.168.69.17 1433


ぐらいです。


私が、テストしたPHPサンプルコードは、以下の通りです。
#テーブル名、ホスト、ユーザ、パスワードは、変えてあります。

----------------------------------------------
<html>
<head>
<title>example</title>
</head>
<body>
MSSQLへの接続テスト<br><br>
<pre>
<?php

$query="select 担当者コード FROM table";
$query_sjis=mb_convert_encoding ($query, "SJIS");
echo $query_sjis;
if ($c = mssql_pconnect('myserver','user','pass') {
  echo "成功!\n";
  if ($r = mssql_query($query_sjis, $c)) {
    while($row = mssql_fetch_row($r)) {
      echo "========== next row ============\n";
      while (list($k, $v) = each($row)) {
        echo "\$row[$k] => $v\n";
      }
    }
  } else {
    echo "queryの送信に失敗!\n";
  }
  mssql_close($c);
} else {
  echo "失敗。\n";
}
?>
</pre>
</body>
</html>
------------------------------------------------

以上です。

*------------------------------------------------*
山武ビルシステム株式会社
計装エンジニアリングセンター
大野 浩之
E-Mail:ohnohiro@ise.ybs.yamatake.co.jp
Savemation by Yamatake Building Systems Co.,Ltd.
*------------------------------------------------*