[PHP-users 35787] PHP-MySQL間のデータ受け渡しが不調、教えてください
宮原
miyafamly @ jeans.ocn.ne.jp
2013年 7月 5日 (金) 14:25:24 JST
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 メーリングリストの案内