• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPからMSSQLへの接続結果の文字化け)

PHPからMSSQLへの接続結果の文字化け

このQ&Aのポイント
  • PHPからMicrosoft SQL Serverのデータベースへ接続し、ブラウザに日本語のデータを表示する際に文字化けが発生しています。この記事では、文字化けの原因と対処法について説明します。
  • 文字化けの原因は、PHPからMSSQLへの接続時に文字コードの設定が不適切であることです。接続時に正しい文字コードを指定することで、文字化けを解消することができます。
  • また、SQL文で日本語のテーブル名を使用する場合は、文字化けを防ぐためにテーブル名の指定方法を変更する必要があります。具体的な対処法についても解説します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.1

>> 上記の環境からphp_pdo_sqlsrv_54_ts.dllとphp_sqlsrv_54_ts.dllを使用することを決定。 とありますが、実際にご利用になられているのは PHP 用 Microsoft SQL Server ドライバ http://php.net/manual/ja/book.sqlsrv.php のほうみたいですね。こちらは日本語版マニュアルが存在しないほどマイナーな関数で、わざわざこれを利用するメリットは全くないと思います。せっかくなので PHP Data Objects http://www.php.net/manual/ja/book.pdo.php Microsoft SQL Server 関数 (PDO_SQLSRV) http://www.php.net/manual/ja/ref.pdo-sqlsrv.php こっちで書きませんか?下の記事はMySQL向けに書いていますが、ある程度は参考になると思います。 PHPでデータベースに接続するときのまとめ http://qiita.com/mpyw/items/b00b72c5c95aac573b71 DSNに関しては下記を参照してください。 PDO_SQLSRV DSN http://php.net/manual/ja/ref.pdo-sqlsrv.connection.php

do79tama13
質問者

お礼

返信が遅くなって申し訳ございません。 アドバイスの通り「sqlsrv_connect」ではなく「PDO_SQLSRV」を使って以下のように書き直してみました。 MSSQLconnection-test.php <?php $server = "SQLEXPRESS"; $user = "user"; $pwd = "password"; $db = "shop"; try{ $conn = new PDO( "sqlsrv:Server= $server ; Database = $db ", $user, $pwd); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); }catch(Exception $e){ die(print_r($e)); } //エラーを起こさず無事にアクセスできた場合の処理 $sql = "SELECT * from food"; $stmt = $conn->query($sql); while($row = $stmt->fetch(PDO::FETCH_NUM)){ print ($row[0]); //No print($row[1]); //food print($row[2]."<br>"); //price } // コネクションとステートメントの開放 $stmt = null; $conn = null; ?> これでMicrosoftSQLサーバーからの結果を表示しても文字化けしなくなりました。 また、sql文で例えば「$sql="select * from 食品";」というように日本語のテーブル名を指定してもちゃんと結果を受け取ってくれます。 助かりました。ありがとうございましたm(_ _)m

関連するQ&A

専門家に質問してみよう