如何在sql查询的一部分中将两个foreach循环正确地组合在一起?

Meitie

我的数据库中有共享相同FK但唯一PK的信息,因此我循环将其显示在页面上。我想构建一个SQL更新查询以能够对其进行更新。我现在有2个循环,但是我不确定如何将它们完全结合起来,以使其合而为一。

我缺少什么或需要做什么才能获得所需的结果,以便在运行代码时它更新应该更新的唯一字段?我是否应该将for-each循环放在另一个for-each循环中,这样可行?

这是连接数据库并从数据库获取信息的代码,然后是循环以显示值和id字段。

//connect
$sql_awards = "select `awards`, `awardsid` from inf_awards where inf_id = $vId";
$rs_awards = mysqli_query($vconncvnl, $sql_awards);

//display inputs
while ($rs_awards_rows = mysqli_fetch_assoc($rs_awards)) {
echo '<input type="text" name="awardact[]" id="awardact" class="awardactadd" value="' . $rs_awards_rows['awards'] . '">';
echo '<input type="hidden" name="txtaward[]" value="'. $rs_awards_rows['awardsid'] .'">';
}

现在,我可以将信息获取到流程页面,我也有一条SQL更新语句和一个循环的

我用来显示奖赏ID的foreach循环,然后显示sql代码的foreach循环

//construction of loop for the awardsID field
$awardsId = '';
$award = $_POST['txtaward'];

foreach ($award as $awardid){
         $awardsId .= $awardid;
}

//construction of the loop for building the SQL Update Query
$sql_up_award = '';
foreach ($vaccolates as $valuesawards) {
                $sql_up_award .= sprintf("UPDATE inf_awards SET awards = %s WHERE inf_id = $vid AND awardsid = $awardsId ; ". "<br>", escapestring($vconncvnl, $valuesawards,'text'));
            }

但是当我这样做时,它给了我

UPDATE inf_awards SET awards = 'john smith honorary' WHERE inf_id = 2 AND awardsid = 23; 
UPDATE inf_awards SET awards = 'Best scorer' WHERE inf_id = 2 AND awardsid = 23; 

我猜这是上一个循环的原因,因为当我在其中调用它时,它将循环满足条件的每个值,而此时的值只是“ 23”

我想要成为的结果就像

UPDATE inf_awards SET awards = 'john smith honorary' WHERE inf_id = 2 AND awardsid = 2; 
UPDATE inf_awards SET awards = 'Best scorer' WHERE inf_id = 2 AND awardid = 3;
GolezTrol

嵌套循环将无法解决它,因为您将获得4个更新。

您有两个数组,一个带有id,一个带有值。您可以创建一个for循环并按索引获取匹配的值。

但是,我认为这并不完全安全,因为恐怕人们会把文本弄成空白,从而弄乱了您的数组,因此至少要事先检查两个数组包含相同数量的项目,这一点很重要:

if (count($award) != count($valuesawards)) {

  echo 'Please fill in all the names';

} else {

    $sql_up_award = '';

    //construction of the loop for building the SQL Update Query
    $sql_up_award = '';

    for ($i = 0; $i < count($award); $i++) (
      $awardid = $award[$i];
      $valuesawards = $vaccolates[$i];
      $sql_up_award .= sprintf("UPDATE inf_awards SET awards = %s WHERE inf_id = $vid AND awardsid = $awardsId ; ". "<br>", escapestring($vconncvnl, $valuesawards,'text'));
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Python中将两个具有相同索引的Series组合在一起?

如何在MySQL中将两个不同的表组合在一起并对其进行排序

如何在Excel中将以下两个if公式组合在一起?

如何将两个SQL查询与不同的条件组合在一起?

如何在Java android中将两个函数结合在一起

如何在 SQLite 中将两列一个接一个地组合在一起?

在SELECT中将两个列表组合在一起

Python 以字母开头的行,将两个 for 循环组合在一起?

将两个查询组合在一起以形成月份计数

将两个不同的表组合在一起进行查询

如何将两个查询和订单数据组合在一起

如何将两个通用队列组合在一起?

如何在Python中将3个元组组合在一起

如何在绑定和两个默认网关上将网桥与VLAN组合在一起

如何在 Hive SQL 中将与时间相关的事件组合在一起

如何将这两个查询结合在一起?(MySQL)

将SQL查询组合在一起

如何返回将两个函数与两个参数组合在一起的函数

谷歌表格查询功能 - 在查询中将 2 个步骤组合在一起

Python将两个for循环组合在一起,并且不会过度重复

将两个具有不同位置的SQL查询组合在一起并返回唯一的行

将两个或多个线程组合在一起

将两个IQueryable组合在一起不起作用

将两个 -filter_complex 命令组合在一起

两个列表整数在python中组合在一起

两个SVG组合在一起

为什么不能将两个功能组合在一起?

如何将这两个PSQL查询正确地连接在一起?

如何将2个Foreach循环与不同的数组结果组合在一起?