【发布时间】:2019-07-24 13:55:24
【问题描述】:
当我将特定 ID 发布到我的数据库时,我正在尝试获取 JSON 格式。当我得到多个结果时,我有多个行,我想取回这些行。我确实得到了不同的数组,但它不是有效的 JSON 格式。而不是
[{...},{...},{...}]
它回来了
{...}{...}{...}
因此缺少 [...] 并且数组没有用逗号分隔。
我的代码在下面。函数“getUserBookingsKl”在不同的 php.ini 文件中定义。
//get user bookings
public function getUserBookingsKl($id) {
//sql command
$sql = "SELECT * FROM `***` WHERE `hf_id`=$id AND `alloc_to`>DATE(NOW()) AND NOT `confirmation`=0000-00-00 ORDER BY `alloc_from`";
//assign result we got from $sql to $result var
$result = $this->conn->query($sql);
// at least one result
if ($result !=null && (mysqli_num_rows($result) >= 1 ))
{
while ($row = $result->fetch_array())
{
$returArray[] = $row;
}
}
return $returArray;
}
...
...
foreach($userdb as $dataset)
{
$returnArray["group"] = $dataset["kf_id"];
$returnArray["from"] = $dataset["alloc_from"];
$returnArray["to"] = $dataset["alloc_to"];
echo json_encode($returnArray);
# return;
}
// Close connection after registration
$access->disconnect();
【问题讨论】:
-
”//这里将值推入数组” - 不,你不是。
-
注意:
mysqli的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)和$db->prepare("…")程序接口是 PHP 4 时代的产物,当时引入了mysqliAPI,理想情况下不应在新代码中使用。 -
警告:使用
mysqli时,您应该使用parameterized queries 和bind_param将任何数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了一个严重的SQL injection bug。 切勿将$_POST、$_GET或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。 -
你只能用 JSON 做一个输出,所以你实际上发送了多组 JSON 数据而不是 1。作为一般规则,你应该能够在输出之后调用
exit()而不会破坏你的东西.如果您在循环中调用 exit,那么您的循环将无法完成,因此您必须将该输出移到循环之后。
标签: php mysql arrays json mysqli