问:任务:验证“玩家”是否在他们的社交媒体网站上放置了老式促销 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)"
?>