PHPからデータベースへの登録について
はじめまして。現在、仕事の関係でPHPのプログラムを勉強している者です。
早速ですが、質問させていただきます。
PHPで作成したフォームメールから別で用意したデータベースに
入力データを登録しようとしているのですが、エラーでうまく動作しません。
PHP側のコードミスもあるかもしれませんが、PHPを動作させているサーバーと
データベースサーバーの文字コードが違う点も原因しているのでは?と調べている状況です。
フォームからのデータを送るPHP ⇒ Shift_jis
PHPをアップしているWebサーバー ⇒ Shift_jis
データベースサーバー ⇒ EUC-JP
データベースへの接続は問題なく行えているようですので、
登録処理するコードの部分のみを書きます。(↓)
********************************************************************************
// データベースへの登録
$sql = "INSERT INTO FORM_DATA(DataNumber, Time, Name, Email, Area, Sex, Interest, Commnet, OS, IP) VALUES('$tsvcount', '$ymdhis', '$sender_name', '$mail_address', '$mail_area', '$mail_sex', '$mail_interest', '$mail_body', '$os', '$ip')";
$sql = mb_convert_encoding($sql, 'EUC-JP', 'sjis');
mysql_query("SET NAMES 'EUC-JP'");
$db_result = mysql_query($sql);
print $sql;
print $db_result;
if (!$db_result) {
exit('Error! データを登録できませんでした。');
}
// データベースとの接続解除
$db = mysql_close($db);
if (!$db) {
exit('データベースとの接続を閉じれませんでした。');
}
****************************************************************************
PHP&Webサーバーとデータベースの文字コードを統一すればいい話かもしれませんが、
事情により異なる文字コードの環境で開発しております。
上記の通り、データベースに送信するSQL文はmb_convert_encoding()で「EUC-JP」に変換し、
mysql_query($sql);でデータベースに送信している形です。
この状態で送信すると、エラーとなり送ったSQL文を処理してくれません。
文字コードの変換処理、コードの記述など何が原因なのか分からず困っています。
考えられる原因と、解決策があればご教授いただきたいです。
ちなみに私はPHPはもちろんプログラム自体もまだ経験が浅く、
基礎的なことも理解していないことがかなりあります。
その上でご説明いただけますと大変有難いです。
ではよろしくお願い致します。
お礼
>PHPでやるならmysqldumpでしょうけど、実現できないといわれると 私のやり方が悪いのだと思います。 もう少し調べてみたいと思います。 ありがとうございました。