【发布时间】: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":"Maintanacei","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 问题解决了。
标签: php json mysqli phpmyadmin mariadb