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

时间:2014-02-22 20:00:03

标签: php arrays json mysqli get

我试图从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',以便连续找不到匹配项。

3 个答案:

答案 0 :(得分:0)

而不是指定为'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();

你甚至可以完全放弃其他部分。

答案 1 :(得分:0)

检查此片段中的代码,不要对变量使用相同的名称:

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

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

答案 2 :(得分:0)

问题是mysql查询。

对于那些遇到此问题且需要类似内容的人,您需要像这样格式化查询:

** MYSQL QUERY **

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']);

}