You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用CodeIgniter时MySQL数据库无法正确存储货币符号

问题:MySQL中currencySymbol字段存储为0而非实际符号

我在将数组写入MySQL数据库时碰到了一个棘手的问题:currencySymbol字段始终被存成0,完全不是数组里的实际货币符号,但其他字段的数据都能正常写入。

举个例子,数组里的相关数据是这样的:

[AF] => Array ( 
    [alpha3] => AFG 
    [currencyId] => AFN 
    [currencyName] => Afghan afghani 
    [currencySymbol] => ؋ 
    [id] => AF 
    [name] => Afghanistan 
) 
[AI] => Array ( 
    [alpha3] => AIA 
    [currencyId] => XCD 
    [currencyName] => East Caribbean dollar 
    [currencySymbol] => $ 
    [id] => AI 
    [name] => Anguilla 
)

解决方法

后来排查出问题根源在字段类型设置上:这个currencySymbol字段被错误地设成了int类型!当尝试把字符串(货币符号)存入整数字段时,MySQL会自动尝试将其转换为数字,大部分非数字的符号转换后就变成了0。

修正步骤很简单:

  • 将字段类型改为varchar(长度根据需求设置,比如varchar(10)足够存储绝大多数货币符号)
  • 把字段的排序规则设置为utf16_unicode_ci(确保能正确存储像阿富汗尼؋这类特殊字符的货币符号)

调整完之后,货币符号就能正常存储了。

内容的提问来源于stack exchange,提问作者spreaderman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:15:30