gpt4 book ai didi

php - MySQL、PHP、json 将 MySQL 中的数据附加到 PHP 中的数组中并转换为 jSON 文件

转载 作者:行者123 更新时间:2023-11-29 13:25:44 25 4
gpt4 key购买 nike

我在 PHP 代码中遇到了一个小问题,如何使用 MySQL 提供的数据获取此结果

{"profiles":[
{"ID": "39780b57-9181-4a41-a31e-5d4b3fa59a50", "Name": "Mihai - BP Dev Team","CountryCode": "ro","PictureID": "a30d750a-38e6-407f-a722-943fe3711807","IsStandard": true,"IsOnline": true,"IsPremium": true,"IsVerified": true,"Age": 27,"CityStateCode": "Bucharest"},
{"ID": "e1dd5bab-1eeb-4729-a4f6-0baeb851f750", "Name": "Nicolai", "CountryCode": "dk", "PictureID": "af1345b5-8380-4300-abf0-1d5f15c90040", "IsStandard": true, "Age": 32, "CityStateCode": "Valby"},
{"ID": "2c8535ec-25a4-4a3e-a333-c3797aff491f", "Name": "Testing", "CountryCode": "ca", "PictureID": "ba44bf9b-1592-40a8-b60c-068603bfb9c1", "IsStandard": true, "Age": 30, "CityStateCode": "Centre-Sud North"}}
]}

这是我的 PHP 代码:

$accessDb = new Connexion("gaiurba_MyBD");
$connexion2 = $accessDb->openConnexion();

if ($query2 = $connexion2->prepare("SELECT u.UserName as UserName, u.PictureID as PictureID, u.CountryCode as CountryCode,
u.DateOfBirth as DateOfBirth, u.CityCode as CityCode, u.VerifiedTimestamp as VerifiedTimestamp,
u.OnlineStatus as OnlineStatus, u.IsPaying as IsPaying, u.StatusAvailableForDates as StatusAvailableForDates,
cc.$languageCode as CityStateCode, os.$languageCode as LabelOnlineStatus
FROM Users u
INNER JOIN CityCode cc ON u.CityCode = cc.id
INNER JOIN OnlineStatus os ON u.OnlineStatus = os.id
WHERE u.ID = ?")) {
$query2->bind_param('s', $id);
$query2->execute();
$query2->bind_result($UserName, $PictureID, $CountryCode, $DateOfBirth, $CityStateCode, $VerifiedTimestamp, $OnlineStatus, $IsPaying, $StatusAvailableForDates, $CityStateCode, $LabelOnlineStatus);
$query2->store_result();

$affected2 = $connexion2->affected_rows;

// TRACE
echo "[affected2 row 2 = $affected2]";

if ($affected2 == 1) {
while ($query2->fetch()) {
echo "[ID = $id - UserName = $UserName - PictureID = $PictureID - CountryCode = $CountryCode - DateOfBirth = $DateOfBirth - CityStateCode = $CityStateCode - VerifiedTimestamp = $VerifiedTimestamp - OnlineStatus = $OnlineStatus - IsPaying = $IsPaying - StatusAvailableForDates = $StatusAvailableForDates - CityStateCode = $CityStateCode - LabelOnlineStatus = $LabelOnlineStatus]";
}
} else {
$result = '{"exception":false,"success":false,"status":0,"message":"ERROR SQL Query : SELECT-ULL-ID Number of row !","confirmMessage":null,"html":null,"data":null}';
}
} else {
$result = '{"exception":false,"success":false,"status":0,"message":"ERROR SQL Query : SELECT-ULL-ID Number of row !","confirmMessage":null,"html":null,"data":null}';
}

我知道正确的代码位于我的 while($query2->fetch()) 条件上,因为我的 echo 看到我从 BD 读取了良好的信息。我需要的第一件事是在 PHP 中创建一个数组,并附加从 BD 获取的每一行,最后使用

echo json_encode($result);

不要关注我SELECT返回的数据和JSON字符串中的数据。我知道我必须在 while 循环中格式化一些数据才能获得正确的结果。

我只需要知道如何创建一个数组,在其中为 MySQL 返回的每一行添加一个新数组。

感谢您的帮助!

最佳答案

创建数组非常简单:

$profiles = array();

或者只是

// Add an item. Array is created if $x didn't contain an array already.
$profiles[] = 'foo';

因此,要创建具有您喜欢的结构的对象,您需要一个具有属性的对象,该属性包含表示行的对象数组。

您可以以与数组类似的方式创建一个简单的对象:只需开始分配属性即可。因此,要创建配置文件数组,只需对每一行执行以下操作:

$profile = null;
$profile->UserName = $UserName;
$profile->PictureID = $PictureID;
// Etc

也许您的数据库类支持将整行作为对象返回的方法,而不是调用 fetch()与出站参数相结合。这样您就不需要自己创建对象,从而节省了几行代码。

// Add profile object to array.
$profiles[] := $profile;

也许您的数据库类支持一种将整个数据集作为对象数组返回的方法。如果是这样,您不需要自己循环和构建数组。又节省了几行代码。

但是,您已经构建了数组,然后将其包装在另一个对象中,在其 profiles 中准确地说,是属性。

$result = null;
$result->profiles = $profiles;

并输出:

echo json_encode($result);

创建变量 null 并不是绝对必要的在开始分配属性之前,但它可以防止意外重用旧变量。特别是在循环中,这是必需的,否则您将只是重新分配同一对象的属性并将同一对象多次添加到数组中,从而导致不期望的结果(每一行都相同)。

您不仅可以分配属性,还可以在执行此操作之前实际创建一个对象:

$profile = new StdClass();

这有点冗长,因此可能更具可读性,就像使用 array() 一样。初始化一个空数组。这是个人品味问题。

关于php - MySQL、PHP、json 将 MySQL 中的数据附加到 PHP 中的数组中并转换为 jSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20169332/

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