0

私の Web サイトは、PHP と JavaScript と MySQL データベースで生成されています。私はEclipse Heliosでコードを開発およびデバッグしています。

ユーザーが MicsoSoft Word からカット アンド ペーストしたときに正しく機能するフォームを修正しようとしています。

PHP は入力したテキストを MySQL データベースに保存する必要があり、データベースからの取得時にサニタイズしたいと考えています。

取得とサニタイズはうまく機能しているようです。ただし、データベースに保存されているテキストは、入力したものと異なる場合があります。

たとえば、「baño」と入力すると、「baño」として保存されます

デバッガーでコードをステップ実行すると、次のように生成された SQL コードを確認できます。

insert into table1 set column1 = 'baño'

次のステップは次のとおりです。

if (!mysql_query($sql, $db)) { ...

その後、phpMyAdmin を使用してデータベースを調べるか、PHP で取得すると、column1 の値が「baño」と表示されます。

MySQLはデフォルトでlatin1_swedish_ciを使っていて、utf8_unicode_ci、utf8_binに変更してみましたが、違いはありませんでした。

同様のコードは、他のデータベースでも正しく機能します。

私は何を間違っていますか?

===================

追加した:

これは、100 を超える PHP ファイルと JS ファイルを含む大きな Web サイトです。データベース サーバーには 20 のデータベースがあり、その中に数百のテーブルがあります。

私の問題は、1 つの PHP ファイルと 1 つのテーブルでのみ発生しています。他のコードはそのテーブルに書き込みません。また、そのファイルは他のテーブルに書き込みません。

phpMyAdmin からの情報は次のとおりです。

MySQL

    Server: Localhost via UNIX socket
    Server version: 5.1.43-log
    Protocol version: 10
    User: root@localhost 
    MySQL charset: UTF-8 Unicode (utf8) 

Web server

    Apache/2.2.3 (Unix) mod_ssl/2.2.3 OpenSSL/0.9.7b Zend Core/2.0.1 PHP/5.2.1
    MySQL client version: 5.0.27
    PHP extension: mysql 

phpMyAdmin

    Version information: 3.3.7
4

2 に答える 2

0

多くの追加の調査と実験の後、これで問題が解決することがわかりました。

    mysql_query('SET CHARACTER SET "UTF8";',$db); 

ここで、$db は *mysql_connect()* によって返されるリソースです。

于 2013-04-10T17:55:26.660 に答える