![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
PHP5、MySQL5を使用しています。最近始めたばかりで参考書を購入して勉強しています。
購入した参考書には「PHPとMySQLの連携」という章があり読んでいくと、MySQL(コマンドライン)に日本語が表示されていました。
この本はMyAdminなどを使っていないので、PHPでフォームを作成してそれで日本語をMySQLに送信しているのだと思いやってみたのですが、データが入りません。英数字なら入るのですが、日本語になると入ってくれません。
設定が悪いのでしょうかそれとも私の書き方がいけないのでしょうか。
$ins = "INSERT INTO name VALUES('あじあ')";
$mq = mysql_query($ins);
このように書いたのですができませんでした。すみませんが、よろしくお願いします。
No.3ベストアンサー
- 回答日時:
#2です。
エラー出力はどうなっていますか?
echo mysql_error();
> カラム型はVARCHARにしてあります。
カラム長は大丈夫ですよね?マルチバイト文字ですので注意して下さい。
> クライアントの文字コードというと、METAタグで設定しているやつですか??
METAタグで指定するのは出力したときのブラウザに対してです。
PHPの文字コードは、
1. PHPファイルの文字コード(エディタで指定)
2. PHPの内部文字コード(php.ini等の環境設定の他、mb_internal_encoding()で指定可能)
3. いま扱っている文字コード(ファイル内で書いている場合は1.で指定したエンコード、DBから引っ張ってきたり、フォームで送信された場合はそこで指定された文字コード)
4. HTMLを出力するときの文字コード(先ほどのMETAタグ等で指定するものです)
等があります。いっぽう、MySQLでは、
1. サーバの基本文字コード(サーバの設定)
2. 記録する(されている)文字のエンコード(実際に記録しているデータのエンコード、必ずしも1と一致している訳ではありません)
3. クライアントの文字コード(PHPから取り扱う場合は1.のファイルの文字コードや2.の内部文字コードを指定します)
等があります。
うまく行っている場合はどうってことありませんが、うまく行かない場合はこれらの文字コードを意識しないといけません。
mb_inernal_encoding()、mb_detect_encoding()、mb_convert_encodign()等で指定したり検出したりしてみてください。
No.2
- 回答日時:
> $ins = "INSERT INTO name VALUES('あじあ')";
> $mq = mysql_query($ins);
クエリはこれで大丈夫だと思います。
mysql_errorでエラーを確認してみて下さい。
echo mysql_error();
ところでnameのカラムの型は何になっていますか?int型等、テキストが入らない型になっている可能性が高いですが。
また、環境によってはMySQL5では接続時にクライアントの文字コードをセットする必要があるかもしれません。
mysql_query("SET NAMES sjis");//SJISの場合
のようなクエリをまず発行しなければならない可能性もあります。
参考まで。
ご回答ありがとうございます。
カラム型はVARCHARにしてあります。クライアントの文字コードというと、METAタグで設定しているやつですか??
初歩的で申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP & MySQL: Server-side Web Development ペーパ 1 2022/04/19 19:23
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- PHP ここで言うトークンの意味を教えてください。 3 2022/08/24 03:03
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- MySQL mysqlで INSERT と SELECTの用途は 1 2022/04/01 00:45
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLカラム名は日本語と英数字...
-
文字コードMS932(Windows-31J...
-
SQL Server のキャラクターセッ...
-
接続ができません
-
VBAで変数内に保持された二次配...
-
副問合せにLIKE文を使う方法は...
-
SQLのVARCHARとVARCHAR2の違い
-
INT型は金額の型に使用するべき...
-
Float型の時の計算結果がおかしい
-
【php+mysql】mysqlのレコード...
-
参考書に従って入力したつもり...
-
mysqlへのインポート処理がうま...
-
フォームから送信した値とMySQL...
-
MySQLでエラーがでて前に進めま...
-
ADOのバージョンを確認する方法
-
ユーティリティーとは?OPatch...
-
MySQLのLOAD DATA INFILEコマン...
-
Column '' not found.
-
旧filemakerで和暦(令和など)...
-
プライマリーキーの昇順でソー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLカラム名は日本語と英数字...
-
SQL Server のキャラクターセッ...
-
文字コードMS932(Windows-31J...
-
SQLで日本語データを入力したい...
-
存在しているファイルがロード...
-
MySQL 文字化けについて
-
文字化け
-
日本語のデータがインポートで...
-
MYSQL 4.0.x から 5.X系への移行
-
MySQLの日本語LIKE検索について
-
日本語TSVファイルのLOAD DATA ...
-
PHP経由でMYSQLに全角文字を格...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
ODP.NETのバージョン確認
-
旧filemakerで和暦(令和など)...
-
VBAで変数内に保持された二次配...
-
プライマリーキーの昇順でソー...
-
ERROR 1045 (28000) (using pas...
おすすめ情報