php で MSSQL にアクセス

# cd /usr/local/src
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.
gz
# tar xzvf libiconv-1.13.1.tar.
gz
# cd libiconv-1.13.1
# ./configure && make && make install
# yum install php-mssql
# vi /etc/freetds.conf

[global]

charset = cp932
client-charset = cp932

を追加。
最後に

[セット名]
host=MSSQLのサーバーURL
port = 1433
tds version = 9.0
charset = sjis
client charset = UTF-8
language = japanese

を追加。

# tsql -S セット名 -U アクセスするユーザー名 -P パスワード

で、接続を確認。

# vi /etc/php.ini
[mbstring]
に以下の設定
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.substitute_character = none
そのうえで保存。その後

# yum reinstall php-mbstring
# service httpd restart
で、mbstring をアップデートした。

アクセスする php は以下のように設定した。(vi で作って :wq で保存して権限の設定)

<?php
ob_start();
require_once(&quot;dbaccess.php&quot;);
$dba = new dbaccess();
$db = $dba->mssql_con();
$TelNum = $_GET['tel'];
mssql_select_db(&quot;アクセスするセット名&quot;,$db);
$query = &quot;select * from テーブル WHERE replace(電話一覧フィールド,'-','') LIKE '%&quot;.$TelNum.&quot;%'&quot;;
; 注:電話番号から「−」を抜いたもので検索
$res = mssql_query($query,$db);
$i = 0;
$Ans = &quot;&quot;;
while($row = mssql_fetch_array($res)){
    if ($i == 0) {
        $Kana = mb_convert_encoding(rtrim($row['半角カナの名前フィールド']), &quot;UTF-8&quot;,&quot;SJIS&quot;);
        $PtID =  rtrim($row['IDフィールド']);
        $Ans = $PtID.$Kana;
    }
    $i = $i +1;
}
switch ($i) {
    case 0:
        $Ans = $TelNum;
        break;
    case 1:
        break;
    default:
        $Ans = $Ans.&quot;etc&quot;.strval($i - 1);
}
echo $Ans;
mssql_free_result($res);
mssql_close();
?&gt;;

もう一つのファイルは dbaccess.php
# vi dbaccess.php

<?
class dbaccess
{
      //データベース接続を行う関数
      function mssql_con(){
           $db = mssql_connect (&quot;データベースホスト名&quot;, &quot;ユーザー名&quot;, &quot;パスワード&quot;);
           return $db;
      }
}
?>

コメントを残す

メールアドレスが公開されることはありません。