我的网站是用 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 文件的大型网站。数据库服务器有 20 个数据库,其中有几百个表。
我的问题只发生在一个 PHP 文件和一个表中。没有其他代码写入该表,并且该文件不会写入任何其他表。
这是来自 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