[PHP-users 35787] PHP-MySQL間のデータ受け渡しが不調、教えてください

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[PHP-users 35787] PHP-MySQL間のデータ受け渡しが不調、教えてください

宮原
Noriといいます。

 Kenjiさんの指摘を受け、php.iniファイルの「;mbstring.internal_encoding」
の「;」を取りました。
 その結果、「print mbstring.internal_encoding();」の戻り値は「UTF-8」に
なりました。
 しかし、依然として「my_item」テーブルの日本語text欄は空欄のままで、php
プログラムからデータが送られていないようです。

 また、関係があるか分かりませんが、formからgetした文字列をprint文で
「htmlspecialchars」を実行すると、やはり日本語文字が表示されません。
<?php
 $name = htmlspecialchars( $_REQUEST['my_name'], ENT_QUOTES );
 $name1 = $_REQUEST['my_name'];
 print($name); ==>表示されない
 print($name1); ==>正しく表示
?>

 何かご存じの方、教えていただけませんでしょうか?

=============================7月1日投稿文===============================
 自宅のPC(Windows Vista Home Premium)にXAMPPを入れ、スタンドアロンで画
面からMySQLにデータを挿入 しようとしています。
 XAMPP ; Vr. 1.8.1
PHP   ; Vr. 5.4.7 です。
 「たにぐちまこと著」の「よくわかるPHPの教科書」に従って進んできました。
 MySQLのAdminからデータベースをCreateし、テーブルを設定して、各蘭にSQL
コマンドで日本語のデータを入れる事ができまし た。
 続いて、以下のプログラムで既存の「my_item」テーブルにデータを入力しよ
うとしました。
 <?php
mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('mydb') or die(mysql_error());
mysql_query('SET NAMES UTF8');

mysql_query('INSERT INTO my_items SET maker_id=1, item_name="もも",
price=210,
keyword="缶詰,ピンク,甘い", sales=0, created="2013-07-01",
modified="2013=07-01"')
or die(mysql_error());
echo '<br />データを1行挿入しました。';
?>
 結果は、「データを1行挿入しました。」という返信が返ってきたのですが、
テーブルを開いてみると「name」「keyword」蘭が空欄のま まで、データが入力
されていません。数値は正しく入力されていました。

 PHPプログラムの「charset」は「UTF_8」になっていますし、MySQLデータベー
スの「サーバー接続の照合順序」も 「utf8_general_ci」になっています。
 一方、PHPの内部設定を「php.ini」で調べてみると、814行目に
「default_charset="UTF-8"」とありました。
 ここまでは、問題ないように見えたのですが、内部のエンコード方法を以下の
文で出力して見ました。
  <?php
print mb_internal_encoding();
?>
 その結果、「ISO-8859-1」と出力されました。
 この内部エンコーディング方式が問題ではないかと思いますが、変更方法をご
存じの方、教えていただけないでしょうか。
 どのようにすれば、phpからMySQLに日本語データが移るのか、お教えくだ
さい。
 よろしくお願いいたします。

_______________________________________________
PHP-users mailing list  [hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3
Reply | Threaded
Open this post in threaded view
|

[PHP-users 35788] Re: PHP-MySQL間のデータ受け渡しが不調、教えてください

Sohei Iiwahori -EG
岩堀です。

SQL文はソース上に直接書かれているようですが、ソース自体の文字コードはUTF8で書かれていますでしょうか?


2013年7月5日 14:25 宮原 <[hidden email]>:

> Noriといいます。
>
>  Kenjiさんの指摘を受け、php.iniファイルの「;mbstring.internal_encoding」
> の「;」を取りました。
>  その結果、「print mbstring.internal_encoding();」の戻り値は「UTF-8」に
> なりました。
>  しかし、依然として「my_item」テーブルの日本語text欄は空欄のままで、php
> プログラムからデータが送られていないようです。
>
>  また、関係があるか分かりませんが、formからgetした文字列をprint文で
> 「htmlspecialchars」を実行すると、やはり日本語文字が表示されません。
> <?php
>  $name = htmlspecialchars( $_REQUEST['my_name'], ENT_QUOTES );
>  $name1 = $_REQUEST['my_name'];
>  print($name); ==>表示されない
>  print($name1); ==>正しく表示
> ?>
>
>  何かご存じの方、教えていただけませんでしょうか?
>
> =============================7月1日投稿文===============================
>  自宅のPC(Windows Vista Home Premium)にXAMPPを入れ、スタンドアロンで画
> 面からMySQLにデータを挿入 しようとしています。
>  XAMPP ; Vr. 1.8.1
> PHP   ; Vr. 5.4.7 です。
>  「たにぐちまこと著」の「よくわかるPHPの教科書」に従って進んできました。
>  MySQLのAdminからデータベースをCreateし、テーブルを設定して、各蘭にSQL
> コマンドで日本語のデータを入れる事ができまし た。
>  続いて、以下のプログラムで既存の「my_item」テーブルにデータを入力しよ
> うとしました。
>  <?php
> mysql_connect('localhost', 'root', '') or die(mysql_error());
> mysql_select_db('mydb') or die(mysql_error());
> mysql_query('SET NAMES UTF8');
>
> mysql_query('INSERT INTO my_items SET maker_id=1, item_name="もも",
> price=210,
> keyword="缶詰,ピンク,甘い", sales=0, created="2013-07-01",
> modified="2013=07-01"')
> or die(mysql_error());
> echo '<br />データを1行挿入しました。';
> ?>
>  結果は、「データを1行挿入しました。」という返信が返ってきたのですが、
> テーブルを開いてみると「name」「keyword」蘭が空欄のま まで、データが入力
> されていません。数値は正しく入力されていました。
>
>  PHPプログラムの「charset」は「UTF_8」になっていますし、MySQLデータベー
> スの「サーバー接続の照合順序」も 「utf8_general_ci」になっています。
>  一方、PHPの内部設定を「php.ini」で調べてみると、814行目に
> 「default_charset="UTF-8"」とありました。
>  ここまでは、問題ないように見えたのですが、内部のエンコード方法を以下の
> 文で出力して見ました。
>   <?php
> print mb_internal_encoding();
> ?>
>  その結果、「ISO-8859-1」と出力されました。
>  この内部エンコーディング方式が問題ではないかと思いますが、変更方法をご
> 存じの方、教えていただけないでしょうか。
>  どのようにすれば、phpからMySQLに日本語データが移るのか、お教えくだ
> さい。
>  よろしくお願いいたします。
>
> _______________________________________________
> PHP-users mailing list  [hidden email]
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3



--
/**
 * Sohei Iwahori -EG
 *
 * @e-mail        [hidden email]
 * @url            http://www.eg2mix.com/
 */
_______________________________________________
PHP-users mailing list  [hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3
Reply | Threaded
Open this post in threaded view
|

[PHP-users 35789] Re: PHP-MySQL間のデータ受け渡しが不調、教えてください

Mitsutoshi Nakamura-2
In reply to this post by 宮原
中村@東京です。

すいません、あまり細かくは読んでいないのですが、

1)フォームのページはUTF-8になってますか?

ブラウザの「表示>文字エンコーディング」等(Firefoxの場合)で確認

2)PHPプログラムはUTF-8(BOM無し)で保存してますか?

3)フォームのリクエスト先ページで以下は正常に表示されますか?
--- PHP ---
<?php
echo '<pre>';
print_r($_POST);
---

※念のため、このページの文字エンコーディングも確認
_______________________________________________
PHP-users mailing list  [hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3