我已经看到一些关于人们试图让MySQL使用','作为浮点分隔符的问题 - 我正在尝试做的是停止 PHP在网站上使用它在'nl_NL'区域设置下运行。
因此,在代码中,PHP正在编写一个SQL查询,结尾如下:
" ... HAVING `relevance` >= {$fFloatingPointNumber}";
问题是,因为PHP的语言环境在将该浮点数转换为字符串时运行为'nl_NL',所以它使用','作为分隔符(例如1,5)。
我目前正在采取的措施是:
" ... HAVING `relevance` >= " . number_format($fFloatingPointNumber, 2, '.', '');
有没有更好的方法 - 或者这是我最好的选择?
答案 0 :(得分:0)
你可以试试这个或类似的东西吗?感谢Ludovico Grossi
<?php
setlocale(LC_ALL, 'nl_NL');
setlocale(LC_NUMERIC, 'en_GB'); //overwrite the decimal separator
?>
答案 1 :(得分:0)
解决方案1
如果除了@Pete之外它是唯一的解决方案,我会发布我的答案。
我建议在每个查询之前将语言环境切换为GB或其他一些句点分隔的float / double语言环境,然后切换回正确的语言环境。我想不出任何其他办法。
解决方案2(最佳匹配)
您始终可以使用number_format
方法,如下所示
$stringversion = number_format($theFloat, 2, ".","");
非常确定这会有效,文档在这里http://php.net/manual/en/function.number-format.php