这个问题不关注如何修复或什么是未定义的索引/变量,而是关注如何编写逻辑来连接两个结果。因此,它与"Notice: Undefined variable", "Notice: Undefined index", and "Notice: Undefined offset" using PHP 不同。如果你不这么说,你不妨花时间再读一遍问题。
我正在使用 MySQL 查询来获取不同类型(1-8 或所有类型)的产品列表。
现在有一个特殊情况,type = 8。在这种情况下,数据应该来自不同的表。我无法理解如何实现这一点。我正在尝试使用 array_merge 加入两个数组。我需要将两个结果一起编码以备将来使用。
更新 table1 有 23 列 & table2 有 18 列:
UNIONs (UNION and UNION ALL) require that all the queries being UNION'd have:
The same number of columns in the SELECT clause
The column data type has to match at each position
GetProductList.php
if ($type == 8) {
$sql2 = "";
}
if ($type != "8") { // originally $type != "%"
$typeCondition = "...$type";
$sql1 = "".typeCondition;
} else {
$typeCondition = "";
}
if ($sql1) {
$result1 = mysqli_query($con, $sql1);
$list1 = array();
while ($row = mysqli_fetch_assoc($result1)) {
$list1[] = $row;
}
}
if ($sql2) {
$result2 = mysqli_query($con, $sql2);
$list2 = array();
while ($row = mysqli_fetch_assoc($result2)) {
$list2[] = $row;
}
}
if ($sql1 && $sql2) {
$merged_results = array_merge($list1, $list2);
}
echo json_encode($merged_results);
电流输出
GetProductList.php?project=1&type=1:
variable: sql2
GetProductList.php?project=1&type=8
variable: sql1
答案 0 :(得分:0)
我终于找到了解决办法。 $sql1 对于 type = 1 & type = 8 是不同的。由于它们在不同的时间执行,所以它们总是得到正确的结果:
if ($type != "%" && $type != "8") {
$typeCondition = " … = $type ";
$sql1 = "".
$typeCondition.
"";
} elseif ($type == "8"){
$typeCondition = " … = $type ";
$sql1 =
$typeCondition.
"";
} else {
$typeCondition = "";
}
$sql = $sql1;
$result = mysqli_query($con, $sql);
$list = array();
while ($row = mysqli_fetch_assoc($result)) {
$list[] = $row;
}
echo json_encode($list);