【发布时间】:2019-02-17 20:37:14
【问题描述】:
我正在尝试在 php 中创建一个 api。在这一部分中,我查询我的数据库并将数据加载到chuckquote 对象中,然后将这些对象添加到一个数组中,以便在json 中编码并在应用程序发送get 请求时接收。 当我回显查询结果时,一切都很好,但是如果我在它被实例化后立即回显 id,它的东西就完全不同了,当我对数组进行编码时,一切都是 NULL,并且现在有第 5 个空白行包含日期。我该如何解决这个问题,或者至少我在这里做错了什么?
if($method == "GET")
{
$sql = "SELECT * FROM chuckquotes";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
//echo " " . $row["ID"] . " " . $row["quote"] . " " . $row["author"] . " " . $row["datentime"] . " " ;
$crow = new chuckquote;
echo $crow->$id = $row["ID"];
$crow->$quote = $row["quote"];
$crow->$author = $row["author"];
$crow->$date = $row["datentime"];
$Jsonarray[] = $crow;
}
echo json_encode($Jsonarray);
}
else
{
echo "0 results";
}
$conn->close();
}
类
class chuckquote
{
public $id;
public $quote;
public $author;
public $date;
}
输出:
[{"id":null,"quote":null,"author":null,"date":null,"":"2019-02-17 06:47:13"},{"id":null,"quote":null,"author":null,"date":null,"":"2019-02-17 06:47:13"},{"id":null,"quote":null,"author":null,"date":null,"":"2019-02-17 06:47:13"},{"id":null,"quote":null,"author":null,"date":null,"":"2019-02-17 06:47:13"}]
【问题讨论】:
-
开启显示警告/错误,去掉回显
echo $crow->$id = $row["ID"];,将$crow->$quote = $row["quote"];改为$crow->quote = $row["quote"]; -
是的,我不小心把第一部分留在了测试中.. 但这是删除 $ 工作的问题。谢谢!
-
echo "0 results";...如果您要在有 结果时输出 JSON,那么在没有结果时也回显 JSON 是有意义的。这样,客户端以一致的格式获得一致的响应。事实上,在返回列表的情况下,指示 0 结果的最佳方法是简单地返回一个空数组。然后,您按原样传送纯数据。然后由客户决定如何处理。