2012-02-22 17 views
1

私はGETを使用してパラメータを渡しています。データが英語の場合はmysqlに保存しますが、データが中国語の場合は何も挿入しません。PHP中国語の文字をMysqlに挿入できない

データのエンコードがutf-8であることが検出されました。私のMacBookを使用するとうまく動作しますが、動作していないことがわかりました。奇妙なことに何が悪いと思いますか?例えば

query("insert into Info values ('".$email."','".$_GET['name']."')"); 

これではない成功$nameは中国人である場合。私はecho $_GET['name']を試して正常に表示され、howerverのデータはデータベースに挿入できないので空白です。データベース

+0

あなたが渡したデータは、あなたのmysqlテーブルが扱うことができるエンコーディングではなく、文字列が切り詰められている可能性があります。どのエンコーディングに文字列があり、どのエンコーディングにmysqlクライアント接続があり、どのエンコーディングにデータベースの列があるのですか? – hakre

+0

どのようなエラーメッセージが表示されますか? PDO接続を使用していますか? SQLは 'query(" INSERT INTO info(email)VALUES($ email) ")の行に沿っていなければなりません;また、このタイプのアプリケーションでGETを使用することを提案しません。フォーム?種類のすべての検証をバイパスします。 – NightMICU

+0

MySQLサーバーへの接続を確立した直後に "SET NAMES UTF8"クエリを送信していますか? (あなたのデータはUTF8であると仮定し、そうでない場合はそうでなければなりません)そしてPHP文字列エンコーディングが正しく設定されていますか? '$ _GET ['name']'をUTF8のヘルプに変換する 'iconv'(PHPのマニュアルを参照)を使用していますか? – Daan

答えて

2

query("insert into Info values ('".$email."','香港')"); 

この方法で成功した挿入データは、まず、あなたは本当にこれらの操作のためにPOSTを使用する必要があります。

挿入している列に正しいエンコーディングがあることを確認してください。わからない場合は、私たちのためにテーブル構造をエクスポートしてください。

大安が言ったように、あなたのINSERTクエリの前に

query('SET NAMES UTF8'); 

を試みることができます。

+0

私は過去のデータにGETを使用することを断念しました。 – JBL

+0

@JBL助けて嬉しいです:)もしそれが役に立つと分かったら、答えを受け入れることを検討してください? –

関連する問題