gpt4 book ai didi

php - 为什么我的 MySQL 搜索查询返回列名和数据?

转载 作者:行者123 更新时间:2023-11-30 22:21:30 25 4
gpt4 key购买 nike

我是 PHP 的新手,我已经被这个问题困扰了一段时间(到处搜索但没有真正的帮助)。

我正在尝试搜索数据表中的所有数据(“Select * FROM X”),这似乎工作正常。

但是,当我尝试返回/回显数据时,将数据编码为 JSON 格式作为数组(我希望 1 行作为数组中的 1 个索引)它会做一些奇怪的事情。

这是我目前使用的代码;

$SQL = "SELECT * FROM `units`";
$Result = mysqli_query($link, $SQL) or die ("DB ERROR");
$Total = mysqli_num_rows($Result);
if($Total > 0)
{
$rows = mysqli_fetch_array($Result, MYSQLI_NUM);
$row_count = mysqli_num_rows($Result);
while($row = mysqli_fetch_array($Result))
{
echo json_encode(array($row));
}
}

然后通过以下方式在 Unity (C#) 中使用;

JSONObject obj = new JSONObject(loadUnitsWWW.text);
Debug.Log(obj);

结果是;

[{"0":"2", "unitID":"2","1":"Tanks","unitName":"Tanks","2":"Ground","unitType":"Ground"},[],[],[],[],[],[],[],[],[],[],[]]

它似乎出于某种原因试图返回所有内容,包括列名。但我不知道为什么它会多次返回相同的结果(也不知道 0 从何而来)。

正如我所说,我对 PHP 相当缺乏经验,因此它很可能(事实上我确定)该代码有问题,我已经尝试了一个 for 循环,例如;

for($i = 0; $i < $row_count; $i++) {...}

但无济于事(它返回类似:

["1",[],[],"",null,null,null,{},null,null,null.null[],""..........]

如果有帮助,这里是数据表布局;

unitID | unitName | unitType

1 | infantry | Ground <br>
2 | Tanks | Ground <br>
3 | Support | Ground <br>
4 | Artillery | Ground <br>
. <br>
.

表中有13项

编辑:

这是我期待的:

[["1", "Infantry","Ground"],["2","Tank","Ground"]....]

最佳答案

这是你应该如何做的。在代码中注释

// Always use the field names. this is going to avoid debug nightmare later.
$SQL = "SELECT unitID, unitName, unitType FROM `units`";
$Result = mysqli_query($link, $SQL) or die ("DB ERROR");
$Total = mysqli_num_rows($Result);
if($Total > 0)
{
// initilize a new array
$data = array();
// Note use mysqli_fetch_row because you want only result values
while($row = mysqli_fetch_row($Result))
{
// add the row data to our array
$data[] = $row;
}
// encode the entire data and echo
echo json_encode($data);
}

引用:mysqli_fetch_row

编辑:您也可以像下面这样进行操作。

if($Total > 0)
{
// Get all the result at once and json_encode it!!
echo json_encode(mysqli_fetch_all($Result));
}

引用:mysqli_fetch_all

Edit2:根据@YourCommonSense 的评论,您的代码可以是

$SQL = "SELECT unitID, unitName, unitType FROM `units`";
if ($Result = mysqli_query($link, $SQL))
{
echo json_encode(mysqli_fetch_all($Result));
} else die ("DB ERROR");

关于php - 为什么我的 MySQL 搜索查询返回列名和数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36538232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com