【发布时间】:2014-02-22 20:00:03
【问题描述】:
我正在尝试从 php/mysql 的不同列中获取不同的行,并将它们打包到一个数组中。如果 GET 字符串中的所有值都匹配,我能够成功地 GET 一个 jason 编码的数组。但是,如果没有匹配,代码会回显“不匹配”,并且没有数组。我知道这是因为我的代码的格式。我想要帮助弄清楚的是如何格式化我的代码,以便它只在数组中显示“null”以匹配它无法找到的匹配项。
这是我的代码:
include '../db/dbcon.php';
$res = $mysqli->query($q1) or trigger_error($mysqli->error."[$q1]");
if ($res) {
if($res->num_rows === 0)
{
echo json_encode($fbaddra);
}
else
{
while($row = $res->fetch_array(MYSQLI_BOTH)) {
if($_GET['a'] == "fbaddra") {
if ($row['facebook'] === $_GET['facebook']) {
$fbaddr = $row['addr'];
} else {
$fbaddr = null;
}
if ($row['facebookp'] === $_GET['facebookp']) {
$fbpaddr = $row['addr'];
} else {
$fbpaddr = null;
}
$fbaddra = (array('facebook' => $fbaddr, 'facebookp' => $fbpaddr));
echo json_encode($fbaddra);
}
}
}
$mysqli->close();
更新:GET 请求
我希望下面的 GET 请求返回完整的数组,其中包含数组中不匹配为“null”的任何值。
domain.com/api/core/engine.php?a=fbaddra&facebook=username&facebookp=pagename
上面的 GET 当前返回 null。
有效的请求:
domain.com/api/core/engine.php?a=fbaddra&facebook=username or domain.com/api/core/engine.php?a=fbaddra&facebookp=pagename
这些请求返回具有匹配值的完整数组,或返回 null 的值。
TL;DR 我需要帮助来确定如何格式化代码以返回值为“null”的完整数组,以便在一行中找不到匹配项。
【问题讨论】:
-
你的逻辑有缺陷。你不能有
while(..) {... json_encode();}。您将输出无效的 json - json 字符串必须是 MONOLITHIC 实体。你不能简单地将多个 json 编码的“东西”堆叠在一起并让它们工作。
标签: php arrays json mysqli get