列未显示在 PHP 查询中,但显示在 MariaDB 的 phpmyadmin 界面中

Posted

技术标签:

【中文标题】列未显示在 PHP 查询中,但显示在 MariaDB 的 phpmyadmin 界面中【英文标题】:Columns are not shown in PHP querty but are shown in the phpmyadmin interface for MariaDB 【发布时间】:2018-06-06 19:35:18 【问题描述】:

我编写了一个简单的 php 脚本来为我提供一些数据,但我无法显示所有列(作为 JSON 字符串),但在最新 MariaDB 的 PHPmyadmin 前端中显示了所有列。这个错误的有趣之处在于,通过相同的脚本,另一个查询(不同的 POST 变量值)显示了所有预期的列。在第一个查询中,顺序也会变得混乱。

我在 PHP 脚本中的结果:

"id":"2","name":"it","mail":"john.doe@contoso.com","surname":"john"

预期结果(在 Phpmyadmin 中也显示为以正确查询顺序排列的行):

"id":"2","name":"john","surname":"doe", "department":"it","mail":"john.doe@contoso.com"

我可以用一些肮脏的技巧(最后一个选项)修复订单错误,但列是真正的问题。 MariaDB 或/和 PHP 中是否有列限制?我不确定要寻找什么来解决此错误。

PS:我用谷歌搜索了一下,官方 MariaDB 网站上有人说有一个 1000(我使用相同的存储引擎)列限制。我也查了

    while($r = mysqli_fetch_assoc($sth))
    
    $rows[] = $r;
    

while($r = mysqli_fetch_array($sth))$rows[] = $r;

第二个选项给了我我想收到的一切,但它仍然不是我想要的结果,因为一切都是duplicated。此循环之后的唯一行是

echo json_encode($rows);
mysqli_close($link);?>

我和社区发现了什么:

1.$rows[0] = $r; >>只显示一条记录,但格式仍然不正确。

    array_push($rows,$r); >> 不能解决问题。

    echo json_encode($rows[0]);print_r($rows[0]) >> "ID":"6","Name":"IT Department","Surname":"Doe","Email":"john.doe@contoso.com","‌​DeparmentRole":"Main‌​tanacei","Available"‌​:"Everyday from 8am to 17pm","Phone Number":"44 1206 256000","Office":"A1-Maitanance","CompanyRank":"standard employee" 和 print_r 相同。

【问题讨论】:

如果你使用$rows[0] = $r;会怎样 结果是一样的。 array_push($rows,$r); 也不能解决问题。 请同时提供echo json_encode($rows[0]);print_r($rows[0]); echo result: "ID":"6","Name":"IT Department","Surname":"Doe","Email":"john.doe@contoso.com","DeparmentRole":"Maintanacei","Available":"Everyday from 8am to 17pm","Phone Number":"44 1206 256000","Office":"A1-Maitanance","CompanyRank":"standard employee" print_r 的数据是相同的,只是格式不同(Array([ID]=>6,...)。当我将完全相同的查询复制到 phpmyadmin 界面并在数据库中运行时,我获取其他列,并且值在正确的位置(名称>约翰,部门=> IT,...)。 @Hackerman 问题解决了。 【参考方案1】:

所以仔细观察就成功了。我创建了两个具有相同列名的表。当我们有两列时没有错,但是当我们加入它们时,我们会遇到真正的混乱,原来的列已经被加入的那一列覆盖了,还解释了什么,为什么顺序混乱。所以记住可以“独立”的表中拥有两列OK,但是当加入它们时,所有列都必须具有唯一性名称。我不明白的是,为什么 AS 关键字无法使用别名显示它并采用常规列名。

【讨论】:

以上是关于列未显示在 PHP 查询中,但显示在 MariaDB 的 phpmyadmin 界面中的主要内容,如果未能解决你的问题,请参考以下文章

存储过程中返回的地理列未显示在实体框架自动生成的复杂类型中

数据表:标题中带有点 (.) 的列未正确显示

ASP:带有分页的 Gridview 复选框列未显示选中了哪个复选框

可水平滚动的 TableView 的右列未完全显示

在php中显示SQL查询结果

PHP MySQL查询在结果中显示错误的日期时间