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

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

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

宮原
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  [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
|  
Report Content as Inappropriate

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

住井まさお
スミイです。

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

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

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

iPhoneから送信

6 juil. 2013 15:25、"宮原" <[hidden email]> のメッセージ:

> 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  [hidden email]
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
_______________________________________________
PHP-users mailing list  [hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3
Loading...