我有一个查询,它返回2个数组,每个数组可以有0到5个结果。我需要获取数组的结果,并使用它们来运行第二个查询,其中语句中的列由数组分配
这是基本代码
$result = $conn->query("SELECT UsedQty,NewQty FROM Legend where Name like '$Use%'");
while($row = $result->fetch_assoc()) {
$UsedQty[$g]=$row['UsedQty'];
$NewQty[$g]=$row['NewQty'];
$g++;
}
$result = $conn->query("select * from remainder where po = '$po' and
(($UsedQty[0]>0 or $UsedQty[1]>0 or $UsedQty[2]>0) or
($NewQty[0]>0 or $NewQty[1]>0 or $NewQty[2]>0)) limit $cnt,1");
,只要所有变量的值都可以使用,但是如果数组只有1个或2个(或0个)值,它将不起作用
我也尝试过
$result = $conn->query("select * from remainder where po = '$po' and
($UsedQty[$g]>0) limit $cnt,1");
这必须在单个查询中完成,因为变量$ cnt会跟踪记录和订单---封闭系统,因此安全注入不会成为问题
答案 0 :(得分:0)
在执行查询之前,用所需数量的元素填充数组。这样的事情可能会解决问题:
while ($g < [desired_count]) {
array_push($UsedQty,0);
array_push($NewQty,0);
$g++;
}
[desired_count]
应该设置为将在WHERE子句中测试的元素数。
该查询将如何返回0-5行(基于“ 2个数组,每个数组可以有0到5个结果”)尚不清楚。查询将返回1个数组; while
循环创建2个数组。也许这个($UsedQty[0]>0 or $UsedQty[1]>0 or $UsedQty[2]>0)
是键入快捷方式,目的是测试5个值?在这种情况下,[desired_count]
将为5。