みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

【Mysql】全角文字がDBに追加されません。

アンケートサイト制作をしています。

1、htmlファイル <アンケート回答ページ
>↓
2、phpファイル データをMySQLデータベースに書き込み

3、phpファイル MySQLのテーブルから全体を読み出し

の3つのファイルから構成しています。

データ登録画面のテキストで全角文字を入れても
データベースに新しいデータが追加されません。
半角英数字abcや123であれば、新しいデータが追加されます。
どうしたら全角文字も追加させられるのでしょうか。

ファイルの一部は…

<?php
mb_language('ja');
mb_internal_encoding('EUC-JP');
extract($_POST);

// キャリア判別
$user_career = $_SERVER['HTTP_USER_AGENT'];

$user=$_POST['●●●'];
$q1=$_POST['q1'];
$q2=$_POST['q2'];
$q3=$_POST['q3'];
$q4=$_POST['q4'];

etc

です。
原因が全くわかりません。
ちなみにキャラクタセットはutf8です。
文字化け等はありません。

投稿日時 - 2009-08-10 18:18:38

QNo.5196816

暇なときに回答ください

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

うーーん。
考えてみればhtmlがutf8でmysqlがutf8であればphpファイルの文字コードがなんであれ、セットできるはずだけどなー。(もちろん、リテラルとDBの文字列比較とかは問題あり。)

ちょっと色々気になる点を羅列してみます。

・mb_internal_encoding('EUC-JP');をコメントアウトしてもだめですか?
・mysqlに直接全角でinsertできますか?
・create database [dbname] character set utf8;で作成されていますか?
・CREATE TABLE [tablename](...) DEFAULT CHARSET=utf8 ですか?
・php.iniの中は
[mbstring]
mbstring.language = Japanese
になっていますか?

投稿日時 - 2009-08-12 17:18:17

ANo.1

mb_internal_encoding('EUC-JP');が原因では?
euc-jpで作るなら
全角文字が入る変数が$_POST['zenkaku']ならば
mb_convert_encoding($_POST['zenkaku'], "euc-jp", "utf-8")としてみてはいかがでしょう。

投稿日時 - 2009-08-10 18:49:59

補足

早急なありがとうございます。
試してみました。
でもダメみたいです(;へ;)

ほかに回避できる操作ってありますか?

ちなみに記載し忘れましたが
windows OS VISTA
PHP5.2
DB mysql

返答お待ちしております。

投稿日時 - 2009-08-11 10:28:55

あなたにオススメの質問