我有一个查询对一堆列名称别名,而一些别名是长边(40-50个字符)。在本地,一切正常,但是当我在测试环境中运行相同的代码时,将返回数据库结果,其中键的长度限制为31个字符。
查询代码几乎是开箱即用的CI:
$query = $this->database->query($sql);
if ($query->num_rows() > 0) {
$result = $query->result_array();
print_array($result); // pre and print_r
}
我读过的所有内容都表明PHP并没有限制数组键的长度所以 - 这是一个Codeigniter的东西吗?或者PHP 通常不限制它(是否有可以并且在这里的设置)?
答案 0 :(得分:1)
这不是PHP的问题,而是数据库的问题。数据库(oracle?)确实将列和表标识符的长度限制为32个字节,即31个字符和空字节。
请咨询您的数据库服务器管理员,了解是否可以延长限制。
答案 1 :(得分:0)
这实际上是一个PHP问题。这个bug可以在这里找到:
https://bugs.php.net/bug.php?id=44003
此前有关SO的问题:
PHP & SQL Server - field names truncated
不幸的是,修复需要重新编译PHP。