我正在尝试在php中创建一个api。在这一部分中,我查询数据库并将数据加载到chuckquote对象中,然后将这些对象添加到要用json编码的数组中,并在应用程序发送get请求时接收。 当我回显查询结果时,一切都很好,但是如果我在实例化ID之后立即回显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"}]
答案 0 :(得分:1)
从属性名称中删除$
符号。来自
echo $crow->$id = $row["ID"];
$crow->$quote = $row["quote"];
$crow->$author = $row["author"];
$crow->$date = $row["datentime"];
到
$crow->id = $row["ID"];
$crow->quote = $row["quote"];
$crow->author = $row["author"];
$crow->date = $row["datentime"];
在php中,访问类属性时无需使用$
符号。
尽管最好的做法是为此任务创建一个构造函数。带有构造函数的示例类。
class chuckquote
{
public $id;
public $quote;
public $author;
public $date;
/**
* chuckquote constructor.
* @param $id
* @param $quote
* @param $author
* @param $date
*/
public function __construct($id, $quote, $author, $date)
{
$this->id = $id;
$this->quote = $quote;
$this->author = $author;
$this->date = $date;
}
}
然后您可以在实例化类时分配值。
$crow = new chuckquote($row["ID"], $row["quote"], $row["author"], $row["datentime"]);