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

住井まさお masao @ tsunukoraf.net
2013年 7月 6日 (土) 17:51:24 JST


スミイです。

ブラウザでShiftJISで正しく表示されるということは、もしかして、このプログラムが書かれているPHPファイル自体がUTF-8ではなくShiftJISなのではありませんか?

だとすると、カラムkeywordに格納すべき '缶詰,ピンク,甘い'
もShiftJISで渡っているので、マルチバイト文字だけ格納できないという状況もうなづけるのですが。

テスト用のプログラムで最後の部分の出力が空の配列になってしまっていますが、postで渡していますか?$_REQUESTだと表示出来ているようなので、最後だけ$_POSTになっているのが問題なのかなと思います。

iPhoneから送信

6 juil. 2013 15:25、"宮原" <miyafamly @ jeans.ocn.ne.jp> のメッセージ:

> Noriといいます。
>
> phpからSQLへのデータ挿入のプログラムは以下の通りです。
> ======================================================================
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml">
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=UTF_8" />
> <title>PHP-MySQLトレーニング</title>
> </head>
> <body bgcolor="#f5f5f5">
> <center>
> <table border="0" width="400">
>    <tr>
>      <th><h1>トップページ</h1></th>
>    </tr>
>    <tr>
>      <td bgcolor="#ffffff" width="230" valign="top" align="center"
> height="641">
>      <table border="0" width="200">
>        <tr>
>          <td>
>          <table border="0" bgcolor="#3366ff">
>            <tr>
>              <td width="183" height="37" bgcolor="#c8d9f9">
>                <b>PHP処理</b></td>
>            </tr>
>          </table></td>
>        </tr>
>        <tr>
>          <td>
>        <?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="piech",
> price=210,
>        keyword="缶詰,ピンク,甘い", sales=0, created="2013-07-04",
> modified="2013=07-04"')
>        or die(mysql_error());
>        echo '<br />データを1行挿入しました。';
>        ?>
>     </td>
>        </tr>
>      </table>
>      </td>
> </table>
> </center>
> </body>
> </html>
> ========================================================================
>  ブラウザはIE-9を使っており、エンコードは日本語自動選択です。確認したら
> シフトJISになっていました。他のエンコード方式では表示の際文字化けが起こ
> ります。
>
>  上記のプログラム実行後、データベースの「my_items」テーブルの
> 「item_name」には「piech」が入っていますが、「keyword」は空欄になってい
> ます。
>
>  なお、「mysql_query('SET NAMES UTF8');」をはずすと、「keyword」欄には
> 文字化けしたデータが入ります。
>
>  また、中村@東京さんからご指導いただいた、phpプログラムをフォームのリ
> クエストを受け取るプログラムに組み込んでみました。
> ======================================================================
> <?php
> mb_language("japanese");
> mb_internal_encoding("UTF-8");
>
> $name = htmlspecialchars( $_REQUEST['my_name'], ENT_QUOTES);
> $name1 = $_REQUEST['my_name'];
> ?>
> <p>ようこそ<?php print($name); ?>さん。</p>
>
> <p>オリジナルの氏名は:<?php print($name1); ?>さん。</p>
>
> <?php
> echo '<pre>';
> print_r($_POST);
> ?>
> ======================================================================
> 結果は
> ====================================
> ようこそさん。
>
> オリジナルの氏名は:みやはらさん。
>
> Array
> (
> )
> ======================================
> と表示されました。
>
>  何かご存じの方、教えていただけませんでしょうか?
>
>
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3


PHP-users メーリングリストの案内