TEL:400-8793-956
当前位置:程序、服务器

在 For 循环中运行 SQL 更新

提问者: 近期获赞: 浏览人数: 发布时间:2022-02-14 09:08:49

 问:任务:验证“玩家”是否在他们的社交媒体网站上放置了老式促销 jpeg。这样做可以让他们在游戏中获得加密代币。如果列表已通过视觉验证并“批准”,则所有未验证的帖子都会显示在管理员的仪表板上,并带有一个复选框。每个复选框的值是列表的数据库 ID(参见屏幕截图)。验证列表并勾选复选框后,该页面将 POST(ed) 到查询页面,其中默认值“确认”从 0 更改为 1。然后授予他们指定的令牌。

 
但是,我还没有找到正确的代码公式来让 UDPATE 工作。复选框值将以“echo”模式显示,但 SQL 在 FOREACH 循环中不起作用。
 
    <?php
    
    $checked_arr = $_POST['checkbox'];
    $count = count($checked_arr);
    echo "There are ".$count." checkboxe(s) are checked <br>";
    foreach($_POST['checkbox'] as $val)     {
          $sql = "UPDATE media SET confirm = 1 WHERE id = $val " ;
          echo "$val\n";
    ?>
在网上搜索了工作示例,包括 Stack Overflow,但无济于事。假设这里有一个简单的答案,但作为一个新手 PHP 程序员,它让我望而却步。
 
 
答:您可以在条件中使用 IN 操作。
 
您唯一需要做的就是捕获所有 IDS 并执行“内爆”以为其提供 sql 所需的格式。
 
例如:
 
<?php
$ids = [];
foreach($_POST['checkbox'] as $val){
  $ids[] = $val;
}
$values = implode(",", $ids) // => 'id1, id2, id3, ...'
// this is a massive update based on selected items
$sql = "UPDATE media SET confirm = 1 WHERE id IN ($values)"
?>
上一篇: 试图在嵌套循环中获取 php 数组对象的总和
下一篇: 删除 elementor html 标签,但将文本留在标签内