繁体   English   中英

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

[英]GET Multiple MySQL Rows, Form PHP Variables, and Put Into Json Encoded Array

我试图从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请求

我希望下面的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”,而是分配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']);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM