[英]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.