SQL文エラー charsetの問題でしょうか?

このQ&Aのポイント
  • phpmyadminでcp932とutf8を使ってデータをセットした際、日本語の検索項目でSQL文エラーが発生します。
  • 別のケースでは、日本語でセットされた項目を抽出してリストボックスを表示させる際、リストボックスの中身が文字化けします。
  • 根本的な問題は不明ですが、環境はSUN SolarisでMySQL 5.0.51a-logを使用しています。
回答を見る
  • ベストアンサー

SQL文エラー charsetの問題でしょうか?

phpmyadminでcp932とutf8を使ってデータをセットしました。 日本語はcp932、数値はutf8です。 【ケース1】 1.phpで日本語の検索項目と年月を入力し、 2.phpで、POSTで受け取ったデータを用いて、 phpmyadminでセットしたデータをselectする際、 SQL文エラーが表示されます。 その際エラー対象となっているのは、日本語検索項目のようです。 (年月のみなら結果が出ます。その際、表示されるデータはIEにて 文字化けせずに表示されています。) 【ケース2】 また、同じデータベースを用いた別のケースで、 日本語でセットされた項目を抽出してリストボックスを表示させた際、 その他の項目はIEにて日本語表示されますが、 リストボックスの中身だけ、「???」「??????」と文字化けしてしまっています。 根本的な問題は何なのでしょうか? 【環境】 OS : SUN Solaris MySQL : 5.0.51a-log 【使用例】 <ケース1> $result = mysql_query ( 'set character set cp932' ) ; $sql = "select WorDate,GenName,StrTime,EndTime,SyaNum,JobType,ComName from Denpyo where WorDate like '%" . $_POST["WorDateYear"] . "-%" . $_POST["WorDateMonth"] . "%' and ComName like '%" . $_POST["ComName"] . "%'"; <ケース2> $result = mysql_query ( 'set charcher set cp932' ) ; $sql = "select * from Syain"; 【補足】 phpmyadminにて、 ケース1・2のselect文を流すと、結果は表示されます。 文字化けももちろんありません。

  • MySQL
  • 回答数1
  • ありがとう数1

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

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

encodingの設定を確認したほうがいいとおおいます。 日本語マルチバイトエンコーディング http://www.php.net/manual/ja/function.mb-internal-encoding.php このへんでどうですか

mkhkck
質問者

お礼

とりあえず、ホスティングを変えて、MySQLの文字セットを utf8から、SJISへ変更しました。 結果、文字化けは解消されました。

関連するQ&A

  • phpMyAdmin内での文字化け

    サーバはさくらインターネットを利用してます。 レンタルサーバから専用サーバに移転したのですが、 専用サーバではphpMyAdminで日本語データの文字化けが起きます。 専用サーバのphpMyAdminからDB作成の際、下記の設定で行い、 MySQLの文字セット UTF-8 Unicode (utf8) MySQLの接続照合順序 utf8_unicode_ci DB の照合順序 utf8_unicode_ci レコードをINSERTする際、下記のように文字コードを指定し、 $sql=mb_convert_encoding($sql,"EUC-JP","EUC-JP"); execute_sql($con, $sql); 実行したら、phpMyAdmin内で日本語データが文字化けしました。 サイト内で表示しているDBデータ(日本語)は文字化けしませんでした。 DB の照合順序をutf8以外(ujis_japanese_ciなど)として、 DBを作った場合、レコードをINSERTしたら、サイト内のDBデータも phpMyAdmin内データもどちらも日本語が文字化けします。 また、レンタルサーバのphpMyAdminからDBデータをエクスポートして、 専用サーバのphpMyAdminからインポートした場合、 読み込むDBデータファイルの文字コードをUTF-8にしなければ、 phpMyAdmin内で日本語データが文字化けしてしまいます。 ただ、UTF-8にしてインポートしてもphpMyAdmin内では 文字化けしませんが、サイト内で表示しているDBデータは 文字化けします。 専用サーバのphpMyAdminから データを日本語の文字列に編集・更新したら、 phpMyAdmin内ではそのデータに関しては文字化けなく表示されますが、 サイト内ではそのデータは文字化けしてしまいます。 専用サーバ情報は下記の通りです。 【専用サーバ】 OS:CentOS 5 Apache 2.2.3 PHP5.1.6 DBサーバ:MySQL 5.0.77 アップしているファイルの文字コード:EUC 分かる方、ご回答、よろしくお願いいたします。

    • 締切済み
    • PHP
  • MySQL4.0 UTF-8 での文字化け

    こんにちは MySQL4.0 & PHP4.3 でHTMLは文字コードUTF-8で記述しています。 MySQL4.0の文字コード設定はレンタルサーバーのため不明ですが、 phpMyAdminで、utf-8にてデータを入力しました。 select文でMySQLのデータを拾ってくると文字化けはおきないのですが PHP経由でPOSTされた値を使ってinsertやupdateをかけると文字化けしてしまいます。phpMyAdmin上でも文字化けしていますが、phpMyAdminをEUC-JPにすると、入力した文字が文字化けせずに表示されます。 (が、すでに入っているデータは文字化けします、、、、) 入力画面は metaでUTF-8宣言をしており、ブラウザ(IE)上でエンコードを確認するとUnicode(UTF-8)になっています。4.1みたいにset names を指定するとうまくいくかな?と思ったのですが、やっぱり4.0なので結果は変わらず、でした。PHPのスクリプトそのものは、UTF-8で記述しているのですが、、、、 どういった項目をみなおせばいいのでしょうか?

    • ベストアンサー
    • MySQL
  • sql文について教えて下さい

    お世話になっております select文を教えて下さい A   B 123  0 123  0 123  1 123  1 124  0 124  1 124  2 125  0 125  1 125  1 Aの項目でグルーピングしBが0のデータが2件以上あるケースを選択したいのですが良く分かりません。 上記の場合は、A=123のケースだけを選択したいのですが どなたかご教示下さい。 A  B 123  0 123  0 という結果になるようにSQLを組み立てたいのですが よろしくお願いします。

  • phpMyAdminでutf8_binを使う

    MySQL+phpMyAdmin+PHPで開発を行っています。 テーブル項目の照合順序をutf8_binで使いたいと思っています。 PHPでのデータのやり取りでは文字化けは発生しないですが、唯一、phpMyAdminの表示でデータを見た時だけ、日本語が文字化けというか16進数の数値がズラズラと表示されます。テーブル項目をutf8_unicode_ci に変更すれば、日本語の文字化けは発生しません。 phpMyAdminの一般設定で照合順序をutf8_binにしても同じです。 utf8_binで定義した場合、phpMyAdminで日本語化け(16進数の数値がズラズラ)が発生しない方法はないのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • ブラウザーで日本語が文字化けする(PHP+MySQL)

    以下の現象に対処したいのですが、どうすればいいか弱っています。 (1) phpMyAdminからSQLでテーブルに日本語を挿入して、 PHPプログラムでブラウザー表示すると文字化け(?????で表示)する。 phpMyAdminでこのデータを表示すると、正しく日本語表示されている。 (PHPプログラム内で直接日本語データを記述して挿入しても同じ現象となる) (2) ブラウザーで日本語を入力してPHPプログラムで受取りMySQLに出力して、 そのデータをPHPプログラムでブラウザー表示すると問題なく日本語が表示される。 phpMyAdminでこのデータを表示すると、文字化け(ぐじゃぐじゃの文字で表示)する。 利用しているホスティングサービスは、お名前・COMのVPSプラン 実行時の環境 MySQL: サーバのバージョン: 5.0.77 サーバ: Localhost via UNIX socket MySQL の文字セット: UTF-8 Unicode (utf8) MySQL の接続照合順序: utf8_unicode_ci PHP : PHP5を使用 phpプログラムは、UTF-8で記述。 出力されるHTMLの文字セット <meta http-equiv="Content-type" content="text/html; charset=utf-8" />

    • ベストアンサー
    • PHP
  • phpmyadminで編集すると文字化けします

    こんにちわ。 mysql4.1を使用しています。phpMyadminでデーターを見ると、特に問題なく日本語表示していますが、一旦、phpMyAdmin上で編集をするとデーターが???と文字化けになって保存されてしまいます。アプリ(xoopsやoscommerceなど)での編集は問題なく可能です。 phpMyAdminのLanguageがutf-8しか選べず、euc-jpなどが選択項目にありません。 何か解決法はございますでしょうか?

    • ベストアンサー
    • MySQL
  • 文字化けについて

    phpMyAdmin上ででテーブルを作成し、データを挿入したところ、 phpMyAdmin上であれば、正常に表示されます。 しかしPHPでセレクト結果を表示したところ、 マルチバイト文字が文字化けします。 次にMySqlCommandLineClientよりデータを挿入し、 PHPでセレクト結果を表示すると文字化けはしません。 しかしphpMyAdmin上で参照すると文字化けしています。 文字設定がさっぱりわかりません....よろしくお願いします。 MySQL 4.1.7 PHP 5.02 phpMyAdmin 2.6.0

    • ベストアンサー
    • PHP
  • mySQL 4.0で文字化け

    はじめまして、PHP+mySQLでプログラムを勉強中の初心者です。 PHPからインサートした日本語データをphpmyadminで確認するとデータが化けています。SQL文自体をPHPで表示させると文字化けせずにちゃんと表示されます。  mySQL 4.1以降なら SET NAMESというコマンドをDB接続後に入れることで問題が回避できると言うことですが、mySQL 4.0ではコマンドエラーになってしまいます。 レンタルサーバーなので、PHPのアプリケーション側で対応できたらと考えています。 何かよい方法がないでしょうか? PHP 4.3.11は mySQL 4.0.27です。 PHPのキャラクターはutf-8, mySQLのCharactersetは latin1となっていました。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLへの吐き出し日本語が文字化けする

    自分なりに調べてみたのですが,わからないのでお尋ねいたします。 phpmyadminからmysqlに直接日本語を打ち込むと,ちゃんと日本語が表示されます(phpmyadmin内でデータを再度呼び出した時)。が,phpのプログラムからmysqlにデータをinsertし,phpmyadminでデータを参照すると日本語部分のみ文字化けします。 同じプログラムをアイルサーバで動かしていて,そこではうまくいっているのですが,ファーストサーバでうまくいきません。 ファーストサーバの文字コードはEUC-JPですが,phpもプログラムもEUCで書いています。メール送信部分のプログラムは,ちゃんと日本語が出ています。 日本語文字化けの場合に,チェックするべきところは,どういうところがありますでしょうか?。多分,phpというよりはMYSQL側の問題のような気がしないでもないのですが・・・。

    • ベストアンサー
    • PHP
  • php上でSQL文を実行した結果と、phpMyAdminで実行した結果が違う

    ☆実行環境 php5.3 MySQL4.0 $sql="SELECT * FROM テーブル名 WHERE フィールド名 like '".$変数."%'" php上で上記のようなSQL文を実行させようとしています。 テーブルには該当する行がいくつかあるのですが、ページ上では1行も表示してくれません。 mysql_num_rowsの返り値を見ると0になっています。 SQL文の組み立てがおかしいのかと思い、phpMyAdmin上でSQL文を実行すると、 きちんと欲しい内容が表示されます。 とするとphpでのSQL文の書き方がおかしいのだと思います。 どこかおかしいのかご教授ください。

    • ベストアンサー
    • PHP