gpt4 book ai didi

php - 当有两个匹配数据时,只获取一个 Json 对象响应?

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

我编写了下面的 PHP 代码来从数据库中获取多个 JSON 对象:

<?php

$connection = new mysqli("localhost","root","","Fubon");
$dateCheckSQLCommand = $connection->prepare("select * from clockindata where Month(date)= 11 ");
$dateCheckSQLCommand -> execute();
$result = $dateCheckSQLCommand->get_result();

$rowOfDate = $result->fetch_assoc();

echo json_encode($rowOfDate);

当我运行如下所示的 PHP 文件时,我希望获得两个 JSON 对象,因为我的 MySQL 中有两个月 11 的数据匹配:

[{"account":"Fu","ssid":"Fu","date":"2019-11-14 00:00:00"},{"account":"Fu","ssid":"Fu","date":"2019-11-21 00:00:00"}]

但我只得到一个 JSON 对象,如下所示:

{"account":"Fu","ssid":"Fu","date":"2019-11-14 00:00:00"}

如何解决这个问题?

最佳答案

您需要获取结果中的每一行。您只调用fetch_assoc()一旦在你的代码中。您需要循环直到 fetch_assoc() 返回 false,或者使用 fetch_all() (受支持 only by the mysqlnd driver 。)

$connection = new mysqli("localhost","root","","Fubon");
$dateCheckSQLCommand = $connection->prepare("select * from clockindata where Month(date)= 11 ");
$dateCheckSQLCommand -> execute();
$result = $dateCheckSQLCommand->get_result();

/*** either this ****/
while($row = $result->fetch_assoc()) {
$rowOfDate[] = $row;
}

/*** or this, if it's supported ***/
$rowOfDate = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($rowOfDate);

不过,最好的解决方案是更改您正在使用的数据库 API。 Mysqli 不是很用户友好,并且被编写为 MySQL 的 C API 的低级一对一映射。甚至使用 PDO ,这是 PHP 的另一个内置数据库 API,将使您的代码更易于使用。其外观如下,包括 parameterized query为了安全:

$month = 11;
$db = new PDO("mysql:host=localhost;dbname=Fubon", "root", "of course you have a password");
$stmt = $db->prepare("SELECT * FROM clockindata WHERE MONTH(`date`) = ?");
$stmt->execute([$month]);
$data = $stmt->fetchAll(\PDO::FETCH_ASSOC);

// if your script is outputting JSON, set the MIME type appropriately
header("Content-Type: application/json");
echo json_encode($data);

特别是当您在查询中使用参数时(当然,您已经这样做了,对吧?)PDO 变得比 Mysqli 更容易使用。

关于php - 当有两个匹配数据时,只获取一个 Json 对象响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58828769/

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