我看到有人试图让MySQL使用','作为浮点分隔符 - 我想要做的是stop PHP使用它在'nl_NL'语言环境下运行的网站上。PHP> MySQL浮点分隔符本地化问题
代码PHP所以在写一样结束一个SQL查询:
" ... HAVING `relevance` >= {$fFloatingPointNumber}";
的问题是,因为PHP的语言环境运行为“nl_NL”时,其转换是浮点数到字符串它使用' ,'作为分隔符(例如1,5)。
我在做什么,以防止这种情况目前是:
" ... HAVING `relevance` >= " . number_format($fFloatingPointNumber, 2, '.', '');
是否有这样做的更好的办法 - 或者这是我最好的选择?
你能不能创建用于数据库查询的某种包装器,可以将场所临时更改为使用“。”的场所。分隔器?我不知道这是否是一个可接受的解决方案,我从来没有与其他地区的PHP/MySQL的东西工作。另外可能做所有你的数据库的东西,然后切换到适当的语言环境,当你想输出数据给用户。 – 2012-07-17 10:02:53
http://mark-story.com/posts/view/php-floats-localization-and-landmines虽然我不确定,但这可能有帮助(最后两条评论)。 – 2012-07-17 10:09:12
它已经在一个包装器中了 - 这个问题是我每次PHP构建查询时都必须处理区域设置,而不是在抽象基类中,因为不能保证不会有应用程序代码_should_是使用'nl_NL'发生在构造和破坏数据库包装器之间。 – CD001 2012-07-17 10:10:45