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