【问题标题】:Unwanted truncation of PHP array key name不需要的 PHP 数组键名截断
【发布时间】: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 的限制——但我猜你可能会遇到这样的情况,即完整的键一开始并没有那么远。这可能是使用的数据库驱动程序/扩展的限制。

标签: php mysql arrays


【解决方案1】:

您可以为任何列指定别名(将在结果集中使用的另一个名称),但在这样的计算列上执行此操作总是一个好主意

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)))) AS SensibleName  
/*    change here                      ^^^^^^^^^^^^^^^  */

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

【讨论】:

    猜你喜欢
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多