提问者:小点点

从数组值更新少数行表


我从PHP MYSQL中学到使用数组中的值更新多行

        $array = Array();
           $query = $conn->query("
           SELECT P.email,P.kodeunik FROM peserta P
           LEFT JOIN konfirmasi K ON K.nominal=P.kodeunik
           LEFT JOIN detailbca D ON D.mutasi =P.kodeunik       
           where P.paid='0' AND K.paid='0' AND D.paid='0'");
           while($result = $query->fetch_assoc()){
           $array[] = $result;
           }
    
    $email = implode(',', array_column($array, 'email'));
    $nominal1 = implode(',', array_column($array, 'kodeunik'));

echo $nominal1; // 215003,215004,215005

现在我想要更新表,如果有来自$nominal1的几个数字,在这种情况下,3行表将被更新

$array1=$nominal1;
  $sql1 = "UPDATE detailbca SET paid='1'  
WHERE mutasi IN (' . implode(',', array_map('intval', $array1)) .";
  $sql1 = $conn->query($sql);

这个查询不起作用,出了什么问题?


共2个答案

匿名用户

不需要再次使用implode()

您可以这样做,在$array的kodeunik列上执行array_column(),然后使用intval执行array_map(),最后使用执行implode()it。

$email = "'" . implode("','", array_column($array, 'email')) . "'";
$nominal1 = implode(',', array_map('intval',array_column($array, 'kodeunik')));
$sql1 = "UPDATE detailbca SET paid='1' WHERE mutasi IN ($nominal1)";
$sql1 = $conn->query($sql);

匿名用户

你的语法不对

$array1=$nominal1;
  $sql1 = "UPDATE detailbca SET paid='1'  
WHERE mutasi IN ($nominal1)";
  $sql1 = $conn->query($sql);