-2

我已经看到一些关于人们试图让 MySQL 使用“,”作为浮点分隔符的问题——我想要做的是阻止PHP 在运行在“nl_NL”语言环境下的网站上使用它。

所以在代码中 PHP 正在编写一个 SQL 查询,结尾如下:

" ... HAVING `relevance` >= {$fFloatingPointNumber}";

问题是,因为 PHP 的语言环境在将浮点数转换为使用 ',' 作为分隔符(例如 1,5)的字符串时以 'nl_NL' 运行。

我目前正在做的是防止这种情况:

" ... HAVING `relevance` >= " . number_format($fFloatingPointNumber, 2, '.', '');

有没有更好的方法来做到这一点 - 或者这是我最好的选择?

4

2 回答 2

0

你能试试这个或类似的东西吗?归功于卢多维科·格罗西

<?php
setlocale(LC_ALL, 'nl_NL');
setlocale(LC_NUMERIC, 'en_GB'); //overwrite the decimal separator
?>
于 2012-07-17T10:11:06.807 回答
0

解决方案 1

我会发布我的答案,以防它是除@Pete 之外的唯一解决方案。

我建议在每次查询之前将语言环境切换为 GB 或其他一些以句点分隔的浮点/双语言环境,然后在之后切换回正确的语言环境。我想不出任何其他方式来解决这个问题。

解决方案 2(最佳选择)

您始终可以使用以下number_format方法

$stringversion = number_format($theFloat, 2, ".","");

很确定这会起作用,文档在这里http://php.net/manual/en/function.number-format.php

于 2012-07-17T10:18:57.643 回答