【最大10000ポイント】当たる!!質問投稿キャンペーン!

xampp1.6.6をインストールし、mysqlを使ってデータベースの勉強をしているのですが、
コマンドプロントからtableにデータを登録すると日本語のみ綺麗に弾かれます。

例えば

insert into test(sample1,sample2,sample3) values('test1','テスト','test3');

とすると「1 warnings」と表示され、テストのとこのみ空欄になります。

php、mysql共に文字コードをutf8にしたのですが、これが原因でしょうか?

解決方法よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

まず、Ano.2さんのおっしゃられるとおりWindowsのコマ


ンドプロンプトは「SJIS」しか対応していません。

1.Mysqlにログイン
2.データベース選択
3.「SHOW VARIABLES LIKE 'char%';」コマンドを入力
 ※ここで「character_set_filesystem」以外「UTF8」
  出ない場合、設定不足が考えられます。
  ・character_set_databaseがlatin1などのばあい・・・
   =>UTF8環境でデータベースを作成していますか?
4.「set names cp932;」を入力
5.「Insert into~」を実行

※上記環境はMySQL5.0.45上で確認しました。
※但し、MySQL5.x系とWindowsのコマンドプロンプトはあ
 まり整合性が取れていないらしく、PHPやPhpMyAdmin等
 で確認すると正常に格納されているデータでも、コマン
 ドプロンプト上では表示がおかしくなるケースがあり
 ます。
 私の場合、5.0.51環境では日本語が「半角記号、カナ」
 等に文字化け、5.0.45では、ファイルからアップロード
 した場合、日本語部分を表示させたりすると他部分の表
 示が欠損する場合がありました。

 XAMPP1.6.6ですと、MySQLは5.0.51だと思いますが、ご
 参考までに。

参考URL:http://oshiete1.goo.ne.jp/qa3786052.html
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

「SHOW VARIABLES LIKE 'char%';」を実行したところ「character_set_filesystem」以外utf8になっていたので、
mysql側の問題ではなさそうです。

PhpMyAdminで操作したところ正常に登録できたので、
コマンドプロントは諦めようと思います。

お礼日時:2008/02/23 10:50

Windowsのコマンドプロンプトは、SJISしか対応していないからでは?

    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>Windowsのコマンドプロンプトは、SJISしか対応していないからでは?

あっ、そうなんですか。初めて知りました。
だから弾かれるわけですね。

myphpadminからだと正常に入力できたので、
コマンドプロントは諦めようと思います。

お礼日時:2008/02/23 10:44

コマンドプロントで、set names utf8と打ち込んでから見てみてもダメですか?

    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>コマンドプロントで、set names utf8と打ち込んでから見てみてもダメですか?

ダメでした。。。

myphpadminから操作したところ入力できたので、
コマンドプロントは諦めようと思います。

お礼日時:2008/02/23 10:41

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMySQL 日本語表示 日本語入力できない 

MySQL超初心者です。
XAMPPをインストールしてMySQLの勉強を始めたばかりです。

コマンドプロンプトで日本語入力ができません。
「基礎からのMySQL」という本の内容にそって進んでおり、文字コードの設定
character-set-server = sjis
#collation-server = latin1_general-ci
skip-character-set-client-handshake
もやりましたが、日本語が全く入力できません。

そもそもインストールやセットアップの段階で、画面に表示される日本語が文字化けして読めない状態でした。(ブラウザで日本語のウェブサイトを閲覧する際にもよく文字化けがおこります。グーグルクロームを使っています。)海外で購入したパソコン(eMachines, Windows XP)であることが問題なのでしょうか?何か設定が必要なのでしょうか?

コントロールパネルから言語の設定にて、日本語でキーボード入力できるようにしたので(Microsoft IME)、日常メールをするときなどの日本語入力の問題はありません。

以上よろしくお願いいたします。

MySQL超初心者です。
XAMPPをインストールしてMySQLの勉強を始めたばかりです。

コマンドプロンプトで日本語入力ができません。
「基礎からのMySQL」という本の内容にそって進んでおり、文字コードの設定
character-set-server = sjis
#collation-server = latin1_general-ci
skip-character-set-client-handshake
もやりましたが、日本語が全く入力できません。

そもそもインストールやセットアップの段階で、画面に表示される日本語が文字化けして読めない状態でした。(ブラウザで日本語のウェブサイト...続きを読む

Aベストアンサー

これはMySQLじゃなくコマンドプロンプト(cmd.exe)の問題では?

CONIME.EXE

を検索して自分に合ったサイトを見てください。

それとも単に

Alt + 半角/全角漢字

で日本語FPを起動していないだけどか。。。。

QSQLで日本語データを入力したいのですが。

PHP5、MySQL5を使用しています。最近始めたばかりで参考書を購入して勉強しています。
購入した参考書には「PHPとMySQLの連携」という章があり読んでいくと、MySQL(コマンドライン)に日本語が表示されていました。
この本はMyAdminなどを使っていないので、PHPでフォームを作成してそれで日本語をMySQLに送信しているのだと思いやってみたのですが、データが入りません。英数字なら入るのですが、日本語になると入ってくれません。
設定が悪いのでしょうかそれとも私の書き方がいけないのでしょうか。

$ins = "INSERT INTO name VALUES('あじあ')";
$mq = mysql_query($ins);
このように書いたのですができませんでした。すみませんが、よろしくお願いします。

Aベストアンサー

#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()等で指定したり検出したりしてみてください。

#2です。
エラー出力はどうなっていますか?
echo mysql_error();
> カラム型はVARCHARにしてあります。
カラム長は大丈夫ですよね?マルチバイト文字ですので注意して下さい。

> クライアントの文字コードというと、METAタグで設定しているやつですか??
METAタグで指定するのは出力したときのブラウザに対してです。
PHPの文字コードは、
1. PHPファイルの文字コード(エディタで指定)
2. PHPの内部文字コード(php.ini等の環境設定の他、mb_internal_encoding()で指定可能)
3. いま扱っている文...続きを読む

QDBエラーの意味

フォームからDBにデータ挿入しようとすると

Column count doesn't match value count at row 1

というエラーが出てしまいます・・・どういう意味を持ったエラーなんでしょうか?

Aベストアンサー

カラム数と値の数が合わない、と言う事です。簡単な英語なので覚えましょう。
カラム数が4つにもかかわらず、
"INSERT INTO tablename VALUES (1,'hoge',3)"
とやった場合等に出るエラーだと思います。

Qxampp mysql5.0.51の文字化けについて

mysqlの日本語文字が文字化けし、いろいろ試みてみましたが解決せず
途方に暮れております。
まだ勉強しはじめの超初心者でしてあれこれネットなどで調べて
2週間になりますが解決せず困っています。
どなたか解決方法をご存知でしたらぜひご教授ください。
環境は以下のとおりとなっております。

・ローカルpc→windowsXP
・xampp1.6.6をインストールし、mysql5.0.51を使用中

mysqlのテーブル内の日本語が文字化けし、
いろんなサイトを参考にしながら見よう見まねで
以下のように設定してみました。

1)コマンドプロンプトで
 set character set cp932; と入力

2)my.cnfというファイルに以下内容を追加
[client]
default-character-set = utf8
[mysqld]
skip-character-set-client-handshake
default-character-set = utf8
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8

3) 1)、2)でも解決されなかったため 2)の内容でutf8のところをsjisに変えて再度保存

というような設定を行いました。
このように設定しても文字化けが解消しないどころか、
このように変えてから今度はxamppコントロールパネルのmysqlが
起動しなくなってしまいました。
正確には開始ボタンを押すとmysql起動とは表示されるのですが
開始ボタンが開始のままになってしまいます。

mysqlを使用している知人にこの問題について聞いてみたところ
mysql5.0~の最新バージョンは不安定なので使わないほうがいいとのことですが、本当なのでしょうか?
もし解決方法がないのであれば安定バージョンでインストール
し直したいと思っているのですが、
どのバージョンだと比較的安定しているのでしょうか?
併せてご回答いただけるとたいへん助かります。

本当に初心者の質問で恐縮ですが、よろしくお願いします。

mysqlの日本語文字が文字化けし、いろいろ試みてみましたが解決せず
途方に暮れております。
まだ勉強しはじめの超初心者でしてあれこれネットなどで調べて
2週間になりますが解決せず困っています。
どなたか解決方法をご存知でしたらぜひご教授ください。
環境は以下のとおりとなっております。

・ローカルpc→windowsXP
・xampp1.6.6をインストールし、mysql5.0.51を使用中

mysqlのテーブル内の日本語が文字化けし、
いろんなサイトを参考にしながら見よう見まねで
以下のように設定してみました...続きを読む

Aベストアンサー

ANo2です。
Windows のコマンドラインは特に明示的に変更されていないので
あれば、「CP932」です。

「SHOW VARIABLES LIKE 'char%';」で確認されたときに「UTF8」
で統一されているのであれば、MySQL 側の文字コードの設定は問
題ないと思います。

ひとつ確認として、コマンドラインから、MySQL にログイン後、
明示的に「SET NAMES CP932;」を実行し、データベースとテーブ
ルをテスト用に作成し、コマンドラインから簡単なデータを投入
してみることをお勧めします。

この状態で

1)PhpMyAdmin(XAMPP付属)からMySQLにログインし、作成データを確認する。
 ※「config.inc.php」の設定が必要かも
2)PHP にて簡単な表示ページを作成し、情報を引き出してみる。
 ※PHPの文字コード設定に注意
3)コマンドラインが 「??」や「半角カナ、記号」などに文字化け
 ※コマンドラインとMySQL5.0.51 間の仕様が考えられます。

正直この状態でダメでしたら、素直にダウングレードした方がすっ
きりいくと思います(汗

XAMPPでいくと、MySQL5.0.45がたしか「Ver1.6.4」迄、MySQL4系が
「Ver1.4.16」だと思います。(要確認)

文字コードを「UTF-8」で扱う場合「5.x」系や「4.1系」ですと、
文字コード周りのトラブルにあっている方が結構いらっしゃるみた
いです。(確か4.0xは標準でUTF8未対応でしたよね?)
また、特にWindowsの場合、頑なまでに「CP932」なのでこれも混乱
する一因かもしれません。

文字コードは私もMYSQL含め勉強途中なので、詳しい方にお聞きす
るのが一番だと思いますが、imu_umiさんが構築される環境や運用
環境、用途に応じて設定されるのがよろしいかと思います。
( 例えば、Windows環境で完結&ダメ文字問題がOKなら、CP932等 )

Mysqlのバージョンについては、勉強目的であれば5.0x系でもかま
わないと思います。(個人的な意見ですが)

ANo2です。
Windows のコマンドラインは特に明示的に変更されていないので
あれば、「CP932」です。

「SHOW VARIABLES LIKE 'char%';」で確認されたときに「UTF8」
で統一されているのであれば、MySQL 側の文字コードの設定は問
題ないと思います。

ひとつ確認として、コマンドラインから、MySQL にログイン後、
明示的に「SET NAMES CP932;」を実行し、データベースとテーブ
ルをテスト用に作成し、コマンドラインから簡単なデータを投入
してみることをお勧めします。

この状態で

1)PhpMyAdm...続きを読む

QERROR 1054 (42S22) 原因不明です

idはintでプライマリー
a5はchar(10)で日本語文字列を格納

データを取得しようとすると#1054エラーがでます。

admin--------
SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`
#1054 - Unknown column 'ã

moniter--------
mysql> SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`;
ERROR 1054 (42S22): Unknown column '縺ゅ>縺・∴縺翫°縺・ in 'where clause'


`あいうえおかき`の日本語に問題があると思い半角データを1行だけ更新しました。
admin--------
SELECT * FROM `aaa` WHERE `a5`=`abcde`
#1054 - Unknown column 'abcde' in 'where clause'

moniter--------
mysql> SELECT * FROM `aaa` WHERE `a5`=`abcde`;
ERROR 1054 (42S22): Unknown column 'abcde' in 'where clause'


admin--------
moniter--------
SELECT * FROM `aaa` WHERE `a5`
SELECT `a5` FROM `aaa` WHERE 1
SELECT * FROM `aaa` WHERE `id`=89584
成功

idはintでプライマリー
a5はchar(10)で日本語文字列を格納

データを取得しようとすると#1054エラーがでます。

admin--------
SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`
#1054 - Unknown column 'ã

moniter--------
mysql> SELECT * FROM `aaa` WHERE `a5`=`あいうえおかき`;
ERROR 1054 (42S22): Unknown column '縺ゅ>縺・∴縺翫°縺・ in 'where clause'


`あいうえおかき`の日本語に問題があると思い半角データを1行だけ更新しました。
admin--------
SELECT * FROM `aaa` WHERE `a5`=`abcde`
#1054...続きを読む

Aベストアンサー

> SELECT * FROM `aaa` WHERE `a5`=`abcde`

こうしてみるとか:

SELECT * FROM aaa WHERE a5='abcde'

参考:
http://dev.mysql.com/doc/refman/5.1/ja/identifiers.html
http://dev.mysql.com/doc/refman/5.1/ja/string-syntax.html

Qリンクをクリックした時にformからPOST送信したい。

HTML、PHP、JavaScript等でサイトを作っているのですが・・・。

【実現出来ている例】
<form name="form1" method="post" action="Next.php" onSubmit="return InputCheck()">
 <input type="submit" value="送信">
</form>
 submitボタンを一つ置いて、それがクリックされた場合に
formの内容をPOSTで送信する。

【実現したい例】
<form name="form1 method="post">
 <a href="Next.php" onClick="???">???</a>
</form>
 formの中のリンクをクリックされた場合に、formの内容を
POSTで送信したいのですが、その実現方法がわかりません。
GETで送るという手もあり得ますが、今回はどうしてもPOST
したいのですが。

Aベストアンサー

<form name="form1" method="post" action="Next.php">
<a href="#" onClick="document.form1.submit();">???</a>
</form>

onclick内の対象がform1としてあてているので、
アンカータグは別にform内に記述しなくても大丈夫です

form内にhidden等でnameとvalueを持ったパラメータがあればそれも送られます

アンカータグから動的にvalueを変更したい場合は、
document.form1.hogename.value = 'hoge';
等をsubmit()の前に行えば可能です

ただしform内に
<input type="hidden" name="hogename" value="">
を記述する等、変更先パラメータの元を用意する必要がありますのでご注意下さい

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

QERROR1062:Duplicate entry.....というエラーが出てしまいました

いつもお世話になります。
データベースからSELECTで抽出したデータを別のテーブルにINSERTするSQLを実行したのですが、
ERROR1062:Duplicate entry.....というエラーが出てしまいました。
お詳しい方がいらっしゃいましたら、アドバイスをいただけませんでしょうか?よろしくお願いいたします。
【実行したSQL】
INSERT INTO tblA (dataA1, dataA2, dataA3, dataA4) SELECT "9001","AA",dataB1,dataB2 FROM tblB WHERE dataB1 = 52

tblAの主キー:dataA1とdataA2
tblBの主キー:dataB1

dataA1とdataA2はtblAの主キーとなっているため、重複してしまうということのようです。tblBの主キーはdataB1であるため、抽出されてくるデータは常に1件なので問題ないと期待していましたが、甘くなかったようです。何か良い方法はないものでしょうか?よろしくお願いいたします。

Aベストアンサー

「ERROR 1062」は、重複データを格納しようとした場合に出力されるエラーです。
既にdataA1='9001'&dataA2='AA'という行が、tblAに格納されているのですよね?

>抽出されてくるデータは常に1件なので問題ないと期待していました

「insert ~ select ~」を実行前に、既に同じデータが格納されているのでは?
あるいはprimary keyの指定が、質問中に記された通りでなく、2件以上検索されているかです。

>何か良い方法はないものでしょうか?

何をするための方法を、聞きたいのかが分かりませんが?

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

Qphpから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プログラムから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,...続きを読む

Aベストアンサー

下のに加えてもう一つ、

$result = mysql_query($sql);

の前に

mysql_query('set names sjis')

をした場合の結果も知りたいです。


人気Q&Aランキング