【发布时间】:2012-08-09 17:40:15
【问题描述】:
我正在使用 PHP 来填充公司记录的数据库。我有一个公司名称和他们使用的货币类型的字段。
但是当我使用 PHP 时,如果货币是英语英镑符号 (£),则永远不会插入记录。美元符号 ($) 或任何其他正常字符都没有问题。当我运行 sql 语句并将其直接输入 MySQL 查询浏览器时,带有井号的记录插入得很好。但是当我在 PHP 中运行完全相同的 INSERT 语句时,它就不起作用了。
$sql = "INSERT INTO company_test (name, currency) VALUES ('ABC Widgets', '£')";
$rs = mysql_query($sql, $conn);
//Does not insert a record
$sql = "INSERT INTO company_test (name, currency) VALUES ('ABC Widgets', '$')";
$rs = mysql_query($sql, $conn);
//A record inserts just fine
//My MySQL version is 5.5.11. PHP is version 5.3.6.
//The MySQL table looks like this:
TABLE company_test
FIELD | id | INTEGER(10) | not null | auto increment
FIELD | name | VARCHAR(45) | not null
FIELD | currency | VARCHAR(3)
在 MySQL 查询浏览器中,“表选项”选项卡显示,对于这个 company_test 表,我的字符集是 utf8。
谢谢。
【问题讨论】:
-
PHP 脚本的字符集是什么? ASCII 还是 UTF8?你从 mysql 收到任何警告吗?你试过调用 mysql_error() 吗?
-
这可能无助于回答您的问题,但您应该停止使用
mysql_*函数。它们正在被弃用。请改用PDO(PHP 5.1 起支持)或mysqli(PHP 4.1 起支持)。如果您不确定要使用哪一个,read this SO article. -
是否值得增加
currency字段的大小?我不知道是否将井号存储为一个字符或£之类的东西,这不适合.... -
请记住,
£不是 ASCII 字符。正确插入记录需要匹配 PHP 中的字符集、数据库连接和数据库本身。 -
还要检查 MySQL 数据库正在使用的字符集。可能不允许使用 £ 字符。将 PHP 排除在外,尝试在 MySQL 中执行相同的查询。