-2

$ dataという配列があり、このデータをdbinsertメソッドに送信しています。

これは、次のものと一緒に使用するとうまく機能します。

'body' => $_POST['body']

しかし、私が試してみると:

'body' => htmlentities($_POST['body'])

最初の3語のみが保存されますが、文字ěに関してはそこで停止し、テキストの他の部分は保存されません。

私のデータベースでは、本文は標準のテキストタイプである本文列utf_8_general_ciに格納されています。

すべてのテーブルがテーブル自体だけでなくuf8_general_ciにも設定されているため(ローカルホストと同じ)、db設定とは何の関係もありません。

おかしな部分は、wampを実行しているローカルホストマシンで、これらの奇妙な文字がすべて表示され、htmlentitiesを歌うときにテキストが正しく保存されることです。

サーバー上でのみ機能しませんでした。ところで。それが役立つなら、それはただのホストです。

私のローカルホストやhtmlentities以外で使用できる他の関数と同じように実行する方法を知っていますか?

私はグーグルマップのようなhtmlコードを持っていて、それを保存する必要があるので、htmlentitiesが必要です。htmlentitiesがないと、正しく保存されません。

4

3 に答える 3

1

DBに挿入するときは、mysql_real_escape_stringまたはmysqli_real_escape_stringまたはプリペアドステートメントを使用してみてください。

于 2013-03-24T09:20:14.770 に答える
0

フォームデータのエンコーディングと一致するようにhtmlentitiesエンコーディングを設定してみてください。

PHPバージョン5.4.0の分割に注意してください。htmlentitiesのデフォルトのエンコーディングはUTF-8またはISO-8859-1です。ローカルマシンのPHPバージョンはサーバーと同じですか?

すべてのローカルマシンユーザー(MAMP、WAMP、LAMPなど)への注意:サーバーのバージョンと一致する場合は、PHP/MySQLのバージョンを常に確認してください。ほとんどの場合、テスト環境が本番環境と同一でない場合に期待どおりに機能しない一般的な機能がいくつかあります(そこで、1回または2回...)。

于 2013-03-24T09:57:01.600 に答える
-1

挿入する前に、setutf8をmysqlに使用できます。データベースに特殊文字を挿入できます。参考までにhttp://php.net/manual/en/function.mysql-set-charset.php

于 2013-03-24T09:22:35.017 に答える