Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取多个MySQL行,形成PHP变量,并放入Json编码的数组中_Php_Arrays_Json_Mysqli_Get - Fatal编程技术网

获取多个MySQL行,形成PHP变量,并放入Json编码的数组中

获取多个MySQL行,形成PHP变量,并放入Json编码的数组中,php,arrays,json,mysqli,get,Php,Arrays,Json,Mysqli,Get,我试图从php/mysql中的不同列中获取不同的行,并将它们打包到一个数组中。如果GET字符串中的所有值都匹配,我就能够成功地获取jason编码的数组。但是,如果不匹配,则代码会回显“不匹配”,并且没有数组。我知道这是因为我的代码的格式。我想帮助弄清楚的是,如何格式化我的代码,使其在数组中只显示“null”,以匹配它找不到的匹配项 这是我的代码: include '../db/dbcon.php'; $res = $mysqli->query($q1) or trigger_error($

我试图从php/mysql中的不同列中获取不同的行,并将它们打包到一个数组中。如果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请求返回完整的数组,数组中任何不匹配的值都作为“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”的完整数组。

而不是将其赋值为“null”将其赋值为“assign 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('no match');
}
else
{
    while($row = $res->fetch_array(MYSQLI_BOTH)) {
    if($_GET['a'] == "fbaddra") {
        if ($row['facebook'] === $_GET['facebook']) {
            $fbaddr = $row['dogeaddr'];
                //echo json_encode($row['dogeaddr']);
        } else {
            $fpaddr = null;
        }
        if ($row['facebookp'] === $_GET['facebookp']) {
                $fbpaddr = $row['dogeaddr'];
                //echo json_encode($row['dogeaddr']);
        } else {
            $fbpaddr = null;
        }
        $fbaddra = (array('facebook' => $fbaddr, 'facebookp' => $fbpaddr));
        echo json_encode($fbaddra);
    }
    }
}
$mysqli->close();

您甚至可以将其他部分全部保留。

在该片段中检查您的代码您不能使用相同的变量名称:

if ($row['facebook'] === $_GET['facebook']) {
            $fbaddr = $row['dogeaddr'];
                //echo json_encode($row['dogeaddr']);
        } else {
            $fpaddr = 'null';
        }

$fbaddr与$fpaddr不同,这将错误的结果分配给if语句。

问题出在mysql查询上

对于遇到此问题并需要类似内容的人,您需要将查询格式化为以下格式:

**MYSQL查询**

if ($_GET['PUTVALUEHERE']) {
    $g = $_GET['PUTVALUEHERE'];
    $gq = $mysqli->real_escape_string($g);
    $q1 = "SELECT * FROM `addrbook` WHERE `facebookp` = '".$gq."' OR `facebook` = '".$gq."'";
}
**PHP代码**

if($_GET['PUTVALUEHERE']{
echo json_encode($row['addr']);

}

如果GET字符串中的一个或两个值不匹配,它仍然只返回“不匹配”,而不是将不匹配的值作为“null”的完整数组。只有当代码从未输入其他部分时,才会出现不匹配。您的其他部分是否按预期工作。如果您还想格式化If部分,可以使用$fbaddra=(array('facebook'=>null,'facebook'=>null));echo json_编码($fbaddra);在if PARI中,我同意else语句需要重新格式化。但是,如果我更改echo json_encode('no match')
回声json_编码($fbaddra)$fbaddra=(数组('facebook'=>null,'facebook'=>null))
然后使用echo json_encode($fbaddra)奇数。我仍然只返回null,使用上面的代码和指定的空白数组值。看起来整个事情可能需要重组?建议?已修复,但仍然只给出“不匹配”。无数组。替换:
echo json_encode('No match')行到:
$fbaddra=(数组('facebook'=>0,'facebook'=>0));echo json_编码($fbaddra)放置esle$fbaddra=(数组('facebook'=>null,'facebook'=>fbaddr));对于else函数(每个else函数都有各自的变量),GET请求时仍然返回null,而不是else echo null。没有阵列。你的逻辑有缺陷。您不能在(..{…json_encode();}
时使用
。您将输出无效的json-json字符串必须是一个整体实体。您不能简单地将多个json编码的“东西”堆叠在一起并让它们工作。