• ベストアンサー

PHP でMysqlを使用して日本語を登録する。

すいません、教えて下さい。現在、PHPとMYSQLを連携させてデーターベースを構築中なのですが、日本語が登録できません。mysqlモニタにてinsert 文で登録すると日本語が登録できるのですが、phpを経由すると登録できないのです。phpから、既存のデータベースを呼び出すと日本語のところがすべて文字化けしてしまいます。ちなみにmysqlのmy.iniの設定はsjisにしてあります。ujisにするとmysqlモニタからでも日本語が登録できなくなります。どこの設定がいけないのでしょうか?ちなみにWindows Vista php5.1 mysql 5.1 です。

  • PHP
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

>> どこの設定がいけないのでしょうか? 設定手順の設定を開示していないのでどこの処理がまずいかは分かりませんが、単にDBの文字セット設定とSQLで書込むコードに違いがあるからでしょう。 DBへのSQL発行前に mysql_set_charset で正しい文字コードを設定すればなおると思います http://jp2.php.net/mysql_set_charset

yappuri
質問者

お礼

mpx様 早速のご回答ありがとうございました。早速やってみたところ、 mysql_set_charsetdehaでは、だめだったのですが、関連の命令文 mysql_query("SET NAMES 'utf8'"); で、無事解決いたしました。 本当にありがとうございました。丸1日以上かかってようやっと解決です。解決した瞬間泣けてきました。また、よろしくお願いします。

関連するQ&A

  • PHPでMYSQLのデータを読み込んだ時

    PHPでMYSQLのデータを読み込んで出力した時、日本語の部分だけ、表示されません。 my.iniには、いろいろ調べて、下のように書いてみました。ちなみに、sjisと書いてあるところは、ujisと書き換えたりもしました。 バージョンは、アパッチが2.0.53、PHPが5.0.4、MYSQLは4.0.20dです。 日本語の部分以外は、ちゃんと表示されているので、文字の設定が間違っているのだと思うのですが、 どなたか、分かる方教えてください。 [WinMySQLAdmin] Server=C:/mysql/bin/mysqld-nt.exe [mysqld] default-character-set=sjis language=C:/mysql/share/japanese [mysql] default-character-set=sjis [mysql-dump] default-character-set=sjis

  • phpからMySQLへ日本語insert

    phpプログラムからMySQLへ日本語の入力を行おうとしているのですが、 selectで閲覧してみても、文字化けどころか挿入すらされていませんでした。 コードは以下のような実にシンプルなものです <?php require_once'DB.php'; $username = "****"; $password = "*****"; $host = "localhost"; $database = "udb"; $db = DB::connect("mysql://$username:$password@$host/$database"); //DB接続 if (DB::isError( $db )) { die($db->getMessage()); } $sql = "INSERT INTO comments (lec_code, comment) VALUES (0000, 'ああああ')"; $result = mysql_query($sql); ?> 日本語でなく、英語でinsertした場合は問題なく挿入できました。 また、MySQLから直接SQL文での入力であれば日本語をinsertできたので、設定ミスが問題なのであればMySQLではなくphp側だと思われます。 ちなみに、MySQLの文字設定はsjis、phpの設定は以下のとおりです。 output_buffering Off default_charset "Shift_JIS" extension php_mbstring.dll mbstring.language Japanese mbstring.internal_encoding SJIS mbstring.http_input auto mbstring.http_output SJIS mbstring.encoding_translation On mbstring.detect_order auto mbstring.substitute_character none

    • ベストアンサー
    • PHP
  • PHP+MySQLの文字化けで悩んでいます

    お世話になります。 Windows Server2003で、XAMPPでPHP+MySQLを利用しようとしていますが 文字化けが解消されず困っています。どなたか、お助けいただけないでしょうか。 他では成功していたSJISを使おうと思っていますがうまくいきません。 my.cnfでの[mysqld]や[mysql]などの設定、およびphp.iniのmbstringなどの設定は、 今まで成功していたWindowsやLinuxと同様に行いました。 PHPによる単純な日本語表示もMySQLモニタ上の日本語は問題ありません。 しかし、MySQLからの結果セットを受け取ると文字化けしてしまいます。 たとえば、 $re=mysql_query("SELECT * FROM tb"); while($kekka=mysql_fetch_array($re)){ print $kekka[0]; } などを実行すると「:?w?Z?カ??:」などの表示になってしまいます。 また、PHPからMySQLでINSERTすると、MySQLでも文字化けしてしまいます。 MySQLモニタで「SHOW VARIABLES LIKE 'char%';」を実行すると次のように表示されます。 character_set_client | sjis character_set_connection | sjis character_set_database | sjis character_set_filesystem | binary character_set_results | sjis character_set_server | sjis character_set_system | utf8 知識がなく、悩んでおります。 まことに申し訳ありませんが、どなたかお助けいただけないでしょうか。 どうか、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • MySQL 4.1.10a で日本語入力できない

    以下の環境でPHPとMySQLを使おうと思っているのですが、MySQLのコンソール画面で日本語を入力しようとしても、日本語が表示もされずに消えてしまいます。 mysql> select * from table where data='日本語 ↑ここでエンターを押すと mysql> select * from table where data=' ↑こうなります 過去にも似たような事例は見かけるのですが、参考にして対処しても改善されません。どうしたらよいのでしょうか、すみませんが教えてください。 <以下は環境など> ・FedoraCore2 ・Apache2 ・PHP5.0.4 ・MySQL4.1.10a ■設定ファイル /etc/my.cnf [mysqld] default-character-set = ujis [mysqldump] default-character-set = ujis [mysql] default-character-set = ujis ■起動方法 /usr/local/mysql/bin/mysqld_safe --default-character-set=ujis & ■SHOW CHARACTER SET 以下のように表示されすので、文字コードは入っているように思えるのですが、 どうやって使用すればよいのでしょうか。 mysql> SHOW CHARACTER SET …略… | ujis | EUC-JP Japanese | ujis_japanese_ci | 3 | | sjis | Shift-JIS Japanese | sjis_japanese_ci | 2 | …略… ■Linuxの日本語環境 /etc/sysconfig/i18n LANG="ja_JP.eucJP" SUPPORTED="ja_jp.eucJP:ja_JP:ja"

  • Fedora7+PHP+MySQLで文字化け

    すみません、表題にてPHP側でCSVファイルをINSERTで登録していますが、どうしても文字化けしてしまいます。 Fedoracore7 PHP5.2.2 MySQL5.0.37 phpMyAdmin2.11.0 <php.ini> mbstring.internal_encodein = EUC-JP mb・・・output = EUC-JP <my.cnf> [client]、[mysqldump]、[mysql]ともに default-character-set = ujis [mysqld] default-character-set = ujis skip-character-set-client-handshake init-connect = SET NAMES ujis 色々と調べてEUC-JP(ujis)で統一してるつもりなのですが・・・ phpmyadminでは文字化けは解消してまして、こちらでレコードを登録すると、PHP側では文字化けなしで表示されます。 PHP側での書き込みは、 mb_convert_encoding($val,"EUC-JP","SJIS") で行っていますが、文字化けが解消されません。 どなたかご教授頂ければと思い、質問させて頂きました。 宜しくお願いします。

    • 締切済み
    • PHP
  • PHPとMySQLを利用し、文字化けの問題。

    ApacheとPHPとMySQLを使って、ウェブサイトを作成する。 参考書は導入効果バツグン!PHP5.0+MySQL5.0で構築する最速Webシステムです。 この本によって、色々な設定も変更した。(php.iniの設定とhttpd.confの設定とMySQLのファイルでのmy.ini、三つとも更改した。) MySQLにはPHPMyAdminツールを利用して、データをインポートした。 現在PHPのプログラムは作成していたげと、ブラウザで示した時は文字化けという問題があった。PHPのプログラムでcharset=shift_jisも設定した。ちなみにプログラムの中で日本語を使っているので、ブラウザでも正しく示した。PHPMyAdminの中に示したいデータベースとテーブルには全部のエンコードはsjisで設定した 結局どこか間違ったところがあるので、全くわからなかった。 情報をいただければと思います。では、よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPとMySQLについて

    社内サーバーにWebアプリをUPし、 全てデータベース管理にするため、MySQLを使用しました。 参考書を見ながら作成したため、構文に間違いはありません。 参考書は「 はじめての人のためのかんたんPHP + MySQL入門」です。 この参考書の第8章にあるWEBアプリを忠実に再現しました。 しかし、フォームに情報を入力し、登録を押しても情報が反映されません。 以上と同じように、ぶっとびねっと(フリーレンタルサーバー)でもUPし、phpMyAdminでDBを構築しましたが、 これも同じく登録情報が反映されませんでした。 無論、phpMyAdminから直接CREATEし、HPに情報を反映させるのは可能です。 その際、日本語が???となってしまいましたが、その他は正常です。 一番の問題は、なぜHPから情報を入力し、それがDBへ反映されないのかです。 .htpccessやPHP.iniの設定と何か関係があるのでしょうか? 社内サーバーに.htaccessファイルは無いそうです。 となると、php.iniだと思います。 私は初心者のため、イマイチPHP.iniが良く分かりません。 ローカルにApacheなどを落とした場合は、C:Windowsの中にPHP.iniの設定をいじればいいと思いますが、 社内サーバーの場合、サーバー上のどこかにあるPHP.iniファイルの設定を変える必要があるのでしょうか? 以上、ごちゃごちゃしてて申し訳ありませんが、 お助け下さい。

    • ベストアンサー
    • PHP
  • php5とmysql5の設定

    eucjpで記述したphpのフォームからmysqlにデーターを格納して取り出すDBがあり、日本語表示が化けない設定は出来たのですが同じphpから検索をするとヒットしません。 同じphpスクリプトで別のサーバー(phpとmysqlは同じバージョンです)では問題なく稼働していたので現在のサーバーのphp.iniとmy.cnfの問題だと思うのですが他の似たような状況の方の解決策をなぞってeucjpに統一するなど一通り試したのですがどうもうまく行きません。 ちなみにサーバーは自サーバーでApache/2.2.3 (Debian) 、PHP/5.2.0-8+etch7、mysqlは5.0.32です。 php.iniは mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto (EUC-JPにすると入力後?になる) mbstring.http_output = EUC-JP mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none; my.cnfは [client] default-character-set= ujis [mysqld] skip-character-set-client-handshake default-character-set = ujis character-set-server = ujis [mysql] default-character-set = ujis です。よろしくお願いします!

    • 締切済み
    • PHP
  • PHP+MySQL 4.1.20における文字化け

    お世話になります。 現在、学内に実験的に設置されているサーバーを使って、そこに 「phpMyFAQ(Ver.2.0.3)」を入れて動かそうと試みています。 phpMyFAQのインストールは済んだのですが、いざ使ってみようと思って カテゴリ追加等をしようとすると、日本語が文字化けして「???????」と いうような状態になります。 きっと文字コードの設定に問題があり、php.iniやmy.cnf等の設定を変える 必要があるのでしょうが、サーバーは共用利用しているものであり、他の 利用者へ影響が出てしまうため、変更が困難です。 また、私自身がまだphpやMySQLに詳しくないため、どこを改善すればよい のかがわからずに困っております。(.htaccessをつくっていろいろと記述 してみたりしたのですが、文字化けは解消されていません。) もし何かアドバイス等ありましたらご教示いただけませんでしょうか。 よろしくお願いいたします。 MySQLのバージョン:4.1.20 PHPのバージョン :4.3.9 <MySQL> character_set_client ujis character_set_connection ujis character_set_database ujis character_set_results ujis character_set_server ujis character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/ [mbstring] mbstring.language = Japanese mbstring.internal_encoding = EUC-JP mbstring.http_input = auto mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto mbstring.substitute_character = none;

  • PHPで入力した内容をMYSQLに登録するとエラーが表示。

    PHPで入力した内容をMYSQLに登録するとエラーが表示。 PHP側のフォームにパソコンと入力しMYSQL側に登録すると、 DB Error unknown errorと表示されていますが、 MYSQLのデータベースの中を確認すると、パソコンと登録されています。 PHPとMYSQLはsjisで設定します。 このエラーの回避は出来るのでしょうか?ご教授お願いします。

    • 締切済み
    • PHP

専門家に質問してみよう