![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_15.png?a65a0e2)
『MySQL入門以前』という本をみながら住所録をつくっています。
1、htmlファイル データ登録画面用
↓
2、phpファイル データをMySQLデータベースに書き込み
↓
3、phpファイル MySQLのテーブルから全体を読み出し
の3つのファイルから構成しています。
データ登録画面で、全角文字『愛知県』をいれると
データベースに新しいデータが追加されません。
半角英数字abcや123なら、新しいデータが追加されます。
どうしたら全角文字も対応させられるのでしょうか。
ファイルの一部
<form action="touroku.php" method="post">
<p>氏名:<input type="text" name="simei" size="40"></p>
<p>郵便番号:<input type="text" name="yubin1" size="5">-<input type="text" name="yubin2" size="8"></p>
<p>住所1:<input type="text" name="jusho1" size="50"></p>
<p><input type="submit" value="登録">
<input type="reset" value="リセット"></p>
</form>
MySQL 5.0
PHP 5.2.5.5
apache 2.0.59
Windowes XP
No.2ベストアンサー
- 回答日時:
取り急ぎサンプルを
<?php
mb_language('ja'); // 不要でも入れておく習慣を
mb_internal_encoding('EUC-JP'); // 同上
extract($_POST); // 危ないのでextractを使うのはやめましょう・・
mysql_connect("localhost","root","pass");
mysql_select_db("lesson");
$sql = "set names ujis"; // この行追加
mysql_query($sql) or die("set names abort : " . mysql_error()); // 同上
$kyou = date("y-m-d"); // DB側の定義がわかりませんが「登録日時」のセットはDBに任せては?
$sql = "insert into jushoroku " .
"values(0,'" .
mysql_real_escape_string($kyou) . "','" . // mysql_real_escape_stringを使うこと(以下同様)
mysql_real_escape_string($simei) . "','" .
mysql_real_escape_string($yubin1) . "','" .
mysql_real_escape_string($yubin2) . "','" .
mysql_real_escape_string($jusho1) . "','" .
mysql_real_escape_string($jusho2) . "','" .
mysql_real_escape_string($denwa) . "','" .
mysql_real_escape_string($fax) . "','" .
mysql_real_escape_string($keitai) . "','" .
mysql_real_escape_string($meruado) . "','" .
mysql_real_escape_string($biko) . "')";
mysql_query($sql) or die("sql abort : " . mysql_error() . ", SQL = " . $sql); // この行書き替え
?>
整形のため2バイト空白があるのでコピペ時は要注意。なお未検証なので、文法ミスやtypoがあったら適宜修正してください。
気になったのはextractで展開している部分(セキュリティ的にマズイです)や今日の日付をわざわざphp側でセットしている部分ですかね。基本的にextractで展開せず、ひとつひとつ$_POSTを使うか、$_POSTからセットしましょう。日付はSQL文にMySQLの関数を書けばいいと思いますが、date()だけでよかったかどうか失念したので今回はパスです(汗
この回答への補足
回答ありがとうございます。
データベースに新しいデータが追加されるようになりました。
ありがとうございます!
しかし、文字化けは直りませんでした。全角文字をいれると「?????」と表示されてしまいます。
もう一つphpファイルがあります。
(jushorokuテーブルを読み出すファイルです。)
<?php
mb_language('ja');
mb_internal_encoding('EUC-JP');
mysql_connect("localhost","root","pass");
mysql_select_db("lesson");
$sql = "set names ujis";
$sql = "select * from jushoroku";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if($rows == 0) {
echo "<p>該当データがありません。</p>";
}
else {
while($row = mysql_fetch_array($result)){
echo "<p>";
echo $row["renban"];
echo " ";
echo $row["tourokubi"];
echo "<br />";
echo $row["simei"];
echo " ";
echo $row["yubin1"];
echo "-";
echo $row["yubin2"];
echo " ";
echo $row["jusho1"];
echo $row["jusho2"];
echo "<br />TEL ";
echo $row["denwa"];
echo " FAX ";
echo $row["fax"];
echo " CELL ";
echo $row["keitai"];
echo " MAIL ";
echo $row["meruado"];
echo "<br />";
echo $row["biko"];
echo "</p><hr />";
}
}
?>
No.1
- 回答日時:
・MySQLの文字コード
・例示されたhtmlファイルの文字コード
・phpスクリプトの文字コード(スクリプトに「mb_internal_encoding」は書かれていますよね?)
・登録するときのSQL文の組み立て部分のソース
をお願いします。
またmysql_query()の実行結果は確認されていますか?
#今回は無関係ですが、MySQLへ接続したあとで「set names」をしていますか?
この回答への補足
回答ありがとうございます。
・MySQLの文字コードという存在すら知らなかったです(汗
よく分かりませんがMySQLで
show variables like "char%";といれたところ下のように表示されました。
character_set_client │ utf8
character_set_connection │ utf8
character_set_database │ sjis
character_set_filesytem │ binary
character_set_results │ utf8
character_set_sever │ sjis
character_set_system │ utf8
>#今回は無関係ですが、MySQLへ接続したあとで「set names」をしていますか?
これもしていませんでした。
・htmlファイルの文字コード
euc-jpです。
・phpスクリプトの文字コード
mb_internal_encodingは書いていません(汗
euc-jpで保存すればいいものと思っていました。
・登録するときのSQL文の組み立て部分のソース
すみません。どこの部分かよく分からないです。
下は登録用PHPファイルのbody内です。
<?php
extract($_POST);
mysql_connect("localhost","root","pass");
mysql_select_db("lesson");
$kyou = date("y-m-d");
$sql = "insert into jushoroku values(0,'$kyou','$simei','$yubin1','$yubin2','$jusho1','$jusho2','$denwa','$fax','$keitai','$meruado','$biko')";
mysql_query($sql);
?>
>またmysql_query()の実行結果は確認されていますか?
確認していません。
どのようにやればいいのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルのレコード数を取得し...
-
DB(MySQL)から複数行のデータを...
-
テーブルに入っているデータと...
-
PHP+mysqlでSQL文に文字数制限...
-
住所録を作りたい
-
PHPからデータベースに接続した...
-
実行時エラー3131 FROM 句の構...
-
JAVA SQLServerException 列名 ...
-
MySQLでデータベースにデータin...
-
csvをDBへ読み込んだら、NULLが...
-
mysqlから取得した配列をカンマ...
-
PHPとMySQLで作ったプログラム...
-
PHP(PDO)でDBの情報を完全一...
-
ランダム文字列をDBにINSERT
-
エクセルVBAのデータベース接続...
-
(PHP 4.4.8) sqlite_open関数...
-
Accessへ日付をINSERT
-
checkboxクリック時、SQLを実行...
-
アポストロフィを含む文字列の追加
-
出勤表の作り方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sqlから多次元配列に要素を格納...
-
ボタンのonclick時における関数...
-
stringaddslashes 半角¥が消える
-
phpのエラーについてです
-
Resource id #3 をフィールドの...
-
XAMPPで画面が真っ白になります。
-
PHP+mysqlでSQL文に文字数制限...
-
DB(MySQL)から複数行のデータを...
-
PHP+MYSQLで直近3件のデータ表示
-
テーブルのレコード数を取得し...
-
mariadbでのエラー
-
PHP+MYSQL IF文の初歩
-
PHP+MySQLでの検索結果の横並び...
-
リストから詳細画面に遷移する...
-
mysql_queryでDB検索をしたいが...
-
変数内のデータをmysqlのデータ...
-
XAMMPが起動しません。
-
子プロセス終了で閉じてしまうm...
-
CSVをダウンロードさせた際、CS...
-
PHPについて。
おすすめ情報