【发布时间】:2021-09-26 00:35:06
【问题描述】:
我的数据库中有几个字段是 DECIMAL(10,2) 或 INT 值,当我返回结果时,所有内容都作为字符串返回。
例子:
$sql = "SELECT id, operacion_id FROM operaciones";
$query = $this->db->query($sql);
$result = $query->getResultArray();
return $this->response->setStatusCode(200)
->setContentType('application/json')
->setJSON($result);
然后返回:
[{
"id": "31",
"operacion_id": "ES-2021-0031"
},
{
"id": "30",
"operacion_id": "ES-2021-0030"
}]
我尝试直接放入system\Database\MySQLi\Connection.php connect()方法:
$this->mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE, true);
这很好用,但我知道升级不安全。
【问题讨论】:
-
这听起来更像是一个错误报告或功能请求。请考虑将问题报告给实际项目,而不是 Stackoverflow。
-
你认为升级安全吗?到目前为止,是什么阻止了您进行安全升级? (只是询问更多上下文,没有技巧问题)
-
嗨!下面达曼的回答是正确的。当我说不能升级安全时,我正在修改核心文件,所以如果我升级 Codeigniter 版本,这些更改将被覆盖。谢谢!
-
恕我直言,这应该(使)在数据库配置中成为可能,否则在您编写更新驱动程序时会删除它(例如,在应用安全或其他更新时)。自从我使用 code-igniter 已经有好几年了,是否有可能放在某个地方{在配置中](codeigniter.com/user_guide/database/configuration.html)?
-
我快速查看了 Codeigniter 4,在我看来 Mysqli 驱动程序在其配置中不支持此选项。正如 Dharman 提到的,使用准备好的语句可以规避数据库驱动程序的无能。您需要考虑是否可以将预准备语句与 Codeigniter 和(默认)Mysqli 驱动程序一起使用。除此之外,我建议提交驱动程序支持此选项的功能请求(在我看来,mysqli 支持这样的选项是合理的)。
标签: php codeigniter mysqli