私の 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