gpt4 book ai didi

php - 如何在 mysql - php combo 的输出中干净地更改小数点分隔符

转载 作者:行者123 更新时间:2023-11-29 04:27:28 24 4
gpt4 key购买 nike

我正在尝试将数据库查询导出为 CSV,因此需要使用不同的十进制逗号。 It seems impossible to change the decimal comma in MySQL ,所以我在 PHP 中尝试:

setlocale(LC_NUMERIC, "cs_CZ");

但似乎所有数据库函数,如 mysql_fetch_rowmysql_fetch_assoc 都在检索 string 类型的数据,而不是 double:

$res = mysql_query("select 50/3");
$row = mysql_fetch_row($res);
var_dump($row); // $row[0] is of type "string"

所以通常 PHP 已经没有 double 类型的数据,只有字符串!

那么有没有一些通用的、简洁的方法来指定小数点的输出?

我最终使用 str_replace('.', ',', $row[0]) 转换了字符串,但这很丑陋,原因有二:

  • 你必须知道哪个字段的类型是double
  • 这是一个肮脏的字符串工作。

最佳答案

我不知道你使用的是哪个数据库客户端/驱动程序,但有类似 mysql_field_type­Docs 的东西它根据偏移量为您提供类型,例如 0。

这应该可以查明某个列是否需要重新格式化。

要重新格式化,有 number_format­Docs .

有了这些,您可以自动进行转换。


编辑:关于您的评论:

如果您想映射 PHP 数据类型,请考虑使用 MySQL Native Driver­Docs .与 PDO 一起使用:

Advantages of using mysqlnd for PDO

mysqlnd returns native data types when using Server-side Prepared Statements, for example an INT column is returned as an integer variable not as a string. That means fewer data conversions internally. Source

因此,根据您尝试实现的目标,使用正确的工具。

同时查看 fetching data from a PDO Statement­Docs 时的多个选项.

关于php - 如何在 mysql - php combo 的输出中干净地更改小数点分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8673372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com