【发布时间】:2020-05-20 11:26:25
【问题描述】:
有点 MySQL 新手,如果这是一个简单的问题或术语不正确,请致歉。我正在尝试创建一个动态生成的 MySQL 查询来询问存储在数据库中的数据。到目前为止,这一切都很好,但是,对于我最近的查询,数组键名似乎被截断了。 如果我直接在 PhpMyAdmin 中运行 MySQL 查询,它可以正常工作,但是当我在我的站点中执行此操作时,输出会被截断。比如我的查询如下:
SELECT smallsites_borough_id,
smallsites_borough,
(((smallsites_propertytype_1bed_2015 * 2) + (smallsites_propertytype_2bed_2015 * 3) + (smallsites_propertytype_3bed_2015 * 5) + (smallsites_propertytype_4bed_2015 * 6)) / (smallsites_area_hectares * (1 - (smallsites_percent_greenbelt + smallsites_percent_mol))))
FROM smallsites_data
ORDER BY (((smallsites_propertytype_1bed_2015 * 2) + (smallsites_propertytype_2bed_2015 * 3) + (smallsites_propertytype_3bed_2015 * 5) + (smallsites_propertytype_4bed_2015 * 6)) / (smallsites_area_hectares * (1 - (smallsites_percent_greenbelt + smallsites_percent_mol))))
DESC
当我在结果输出上运行 print_r 时,我得到以下信息(仅限第一行):
Array (
[smallsites_borough_id] => 29
[smallsites_borough] => Islington, London Borough of
[(((smallsites_propertytype_1bed_2015 * 2) + (smallsites_propertytype_2bed_2015 * 3) + (smallsites_propertytype_3bed_2015 * 5) + (smallsites_propertytype_4bed_2015 * 6)) / (smallsites_area_hectares * (1 - (smallsites_percent_greenbelt + smallsites_percent_] => 231.33950480916354
)
您会在上面看到密钥的最后一部分被截断(在 smallsites_percent_)。为什么?这是 print_r 的限制,还是实际上它无法处理具有此长度的键名的数组? 我正在尝试返回最终数字,即。但是,当我运行以下命令时,值为 231.33950480916354:
while ($array = $result->fetch_assoc()) {
echo $array[$sql_query];
}
...它返回零。 我知道底层代码是合理的,因为我有超过 90 个其他查询以完全相同的方式设置,它们可以完美运行 - 但查询更短。因此,正如 print_r 所建议的那样,只能以某种方式截断数组键。 我知道 PHP 中的函数或变量名没有限制,所以我不明白为什么会这样。请帮忙!
【问题讨论】:
-
数组键的长度不受 PHP 的限制——但我猜你可能会遇到这样的情况,即完整的键一开始并没有那么远。这可能是使用的数据库驱动程序/扩展的限制。