• ベストアンサー

文字化けするのはなぜですか

MySQL5.0とPHP5です。 ただのINSERT文です。 $sql=" INSERT INTO meibo (name,sexes,pref,email,comment) VALUES (\"$name\",$seib,$chiiki,\"$email\",\"$iken\")"; $rst = mysql_query($sql,$con)or die('Query failed: ' . mysql_error()); 結果、 Query failed: Unknown column '髢「譚ア' in 'field list' '髢「譚ア'などと変な文字が表れるのは、何処がおかしいからなのでしょうか? 基本的な設定でしょうか? どなたかよろしくお願いします。

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

  • ベストアンサー
  • ranuwe
  • ベストアンサー率33% (7/21)
回答No.3

SQLを良く見たら、単にシングルクォートの変わりにダブルクォートを 使ってるからじゃないでしょうか。 MySQLでの項目の括りはシングルクォートですよ。 SJISならmysql_query("set names sjis")で問題ないと思います。 5c問題は気をつけてくださいね。

brosis
質問者

お礼

5c問題、で検索したらいろいろ勉強になりました。 私は基本的なことがわかっていないようですね。 またどうぞよろしくお願いします。

その他の回答 (2)

  • ranuwe
  • ベストアンサー率33% (7/21)
回答No.2

MySQL5ならSET NAMES character-set-name を実行したらどうでしょう PHPがEUCならSET NAMES UJISを実行してみてください。 SET NAMESで検索したらわかると思います。

brosis
質問者

お礼

回答ありがとうございます。 おっしゃるとおりに実行したら、NAMES UJIS 1 と出ました。 これはPHPがEUCという設定になっているということでしょうか? 私はある本に書いてあるとおり、$selectdb = mysql_select_db($DBName,$con); の前の行に、mysql_query("set names sjis"); を記入ているのですが、これは間違ったことをしているのでしょうか? SJIS なのか UJIS なのか?、どこを見たらPHPがどっちなのかがわかるのですか? 最近phpMyAdminをインストールしたんですが(まだ正しく設定はできていない、使っていない)、それ以来文字化けの問題が発生するような気がするのですが、関係ないですか? ちなみにphpエディタの環境設定はSJIS作成になっています。 php.ini内は mbstring.internal_encoding = SJIS mbstring.http_output = SJIS になっています。

  • swqamy
  • ベストアンサー率37% (11/29)
回答No.1

SQL文を表示させてみてはどうですか? おそらく $sql=" INSERT INTO meibo (name,sexes,pref,email,comment) VALUES (\"".$name."\",".$seib.",".$chiiki.",\"".$email."\",\"".$iken."\")"; とするとできるとはおもいますが。

brosis
質問者

お礼

回答ありがとうございます。 おっしゃるとおり実行しました。 以下のエラーが出ました。 Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ',"mailaddress","コメント")' at line 2

brosis
質問者

補足

mysql_query("set names sjis"); しておいて実行したらエラー下記のエラーだったわけです。 SET NAMES で絞って過去の質問を検索していたところ、 $sql=" INSERT INTO meibo (name,sexes,pref,email,comment) VALUES ('".$name."','".$seib."','".$chiiki."','".$email."','".$iken."')"; というものに出くわしました。そして実行できました。 理由はわかりませんが。

関連するQ&A