php - PHP用数组定义的where语句列名查询表
问题描述
我有一个查询返回 2 个数组,每个数组可以有 0 到 5 个结果。我需要获取数组的结果并使用它们来运行第二个查询,其中 where 语句中的列由数组分配
这是基本代码
$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 正在跟踪记录和订单---封闭系统,因此安全注入不是问题
解决方案
在执行查询之前用所需数量的元素填充数组。这样的事情可能会奏效:
while ($g < [desired_count]) {
array_push($UsedQty,0);
array_push($NewQty,0);
$g++;
}
[desired_count]
应该设置为将在 WHERE 子句中测试的元素数。
查询将如何返回 0-5 行并不明显(基于“ 2 个数组 [that] 每个数组可以有 0 到 5 个结果”)。查询将返回 1 个数组;循环while
创建 2 个数组。也许这($UsedQty[0]>0 or $UsedQty[1]>0 or $UsedQty[2]>0)
是一个打字快捷方式,目的是测试 5 个值?在这种情况下[desired_count]
将是 5。
推荐阅读
- javascript - 在 node.js 中一次握手后 Web-socket 连接断开并做出反应
- php - WooCoomerce WC_Abstract_Order::get_coupon_codes PHP 致命错误
- bash - 用于在 postgres 中使用密码创建用户的 Shell 脚本失败并带有引号
- tensorflow - 如何直接在 gpu 中跨不同深度学习框架转换数据(张量)而不复制到 cpu?
- c - 使用 dlopen 处理库中的自定义类型
- javascript - DataTables - 内容更新后排序不起作用
- javascript - 将包含图像的 HTML 渲染为 PDF Django
- mysql - 无效的 utf8 字符串。将“latin1_german1_ci”列完全转换为 UTF8
- php - 根据 Woocommerce 中的特定城市显示货到付款 (COD)
- google-data-studio - 谷歌数据工作室关于计算字段的条件语句