
PHPからMicrosoft SQLserverのデータベースへ接続を行い、データベースの内容をブラウザへ表示したいのですが、日本語が文字化けして困っております。
導入するまでの手順を書きます。
参考にしたページ
http://chorusde.hatenablog.jp/entry/20120621/134 …
(1)マイクロソフトのホームページより「SQL Server Driver for PHP」をダウンロード、解凍。
(2)自分のPHPバージョンを確認。
Apache/2.4.4
PHP/5.4.19
MSVC9
Thread Safety/enabled
上記の環境からphp_pdo_sqlsrv_54_ts.dllとphp_sqlsrv_54_ts.dllを使用することを決定。
(3)C:\xampp\php\extの下に(1)で解凍したフォルダ内にあるphp_pdo_sqlsrv_54_ts.dllとphp_sqlsrv_54_ts.dllをコピー。
(4)C:\xampp\php\php.iniを開き、「extension=」と書いている951行あたりに
「extension=php_pdo_sqlsrv_54_ts.dll」
「extension=php_sqlsrv_54_ts.dll」
を追加
「mssql.secure_connection = OFF」を「ON」に修正
(5)XAMPPコントロール画面でApacheとMySQLを再起動。
その後、以下のコードで実行したところ日本語が文字化けしました。
以下のコードはこのページのサンプルコードをそのままコピペし少し修正したものです。
http://keicode.com/cgi/how-to-connect-to-mssql.php
<?php
$serverName = 'SQLEXPRESS';
$connectionInfo = array(
'UID' => 'username',
'PWD' => 'password',
'Database' => 'shop'
);
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ){
echo "Cound not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
$tsql ="SELECT * from food";
$stmt = sqlsrv_query( $conn, $tsql );
if( !$stmt ) {
die( print_r( sqlsrv_errors(), true));
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC)) {
print_r($row);
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>
このソースを実行しますと日本語が文字化けしてしまいます。(データを英語表記にすれば問題なく表示できます)
文字化けせずにブラウザに結果を表示するためにはどのようにすればよいでしょうか?
またSQL文の「"SELECT * from food"」の"food"の部分(テーブル名)を「食品」と日本語名に変更するとsql文が実行できなくなりエラーを起こします。
おそらく文字化けしてSQL文を認識してしまうため「そんなテーブル名はありませんよ」と怒られてしまうのだと思います。
初心者で凝縮ですが、どなたかアドバイスをお願いいたします。
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.connecti …
返信が遅くなって申し訳ございません。
アドバイスの通り「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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP 【PHP/MySQL】コード上で生成したクエリを基に集計クエリを作りたい 1 2022/07/28 15:06
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- PHP php テーブルが作成できない 1 2022/11/17 23:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.htaccessにphp_valueが使用できな
-
Apache2.0とPHP5でApacheが起動...
-
初歩的な質問で大変恐縮なので...
-
gdとgd2の違い
-
PHPファイルが表示されない
-
ボブサップが試合放棄
-
<大至急!>ご教授願います。
-
phpで広告の露出回数を調整した...
-
フランク・ジャーニーについて
-
FTP不可のサーバでのパーミッシ...
-
不倫、浮気相手の立場の本
-
require_once()でファイルが読...
-
「/」以降の取得について
-
phpでのRの呼び出し
-
HYのAM11:00のラップの部分の歌...
-
連続投稿対策
-
cgi-binでPHP動作しない
-
モバイルサイトのxhtmlでPHPを...
-
FTPコマンドでディレクトリごと...
-
PHPのif文でその処理を途中で抜...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォームで戻った際に入力済み...
-
*.php、*.php3、*.phtmlの違い
-
.htaccessにphp_valueが使用できな
-
phpの中でphpを書けないか
-
さくらインターネットでメール...
-
Apache 2.4でphp-5.3を使いたい...
-
複数のファイルで同じ定数を定...
-
PHP PDOライブラリが読み込まれ...
-
【PHP】tmp_nameの命名規約につ...
-
HYのAM11:00のラップの部分の歌...
-
Apache 2.4.0でphp5.3を使うには?
-
phpのextension_dirを複数指定...
-
header(Location:~)で$_SESS...
-
PHPからMSSQLへの接続結果の文...
-
<A href ~ と一緒に値を渡すには
-
libphp5.so がないと?
-
PHPが動作できてないと思われる...
-
php.iniの見方
-
PHPINFOが見えない
-
PHPファイルが表示されない
おすすめ情報